下拉清除
我有一个asp.net应用程序,其中有一个下拉列表绑定到数据集。 但是在选择一个项目后,下拉列表会清除所有值,我们如何解决此问题?
这是我在设计页面中的下拉列表:
和绑定代码如下所示。
protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) BindProductDdl(); } private void BindProductDdl() { Products objProducts = new Products(); dsProducts dsProduct = new dsProducts(); ListItem olst = default(ListItem); olst = new ListItem(" Select", "0"); dsProduct = objProducts.GetDataset(""); ddlProduct.DataSource = dsProduct; ddlProduct.DataTextField = "Product"; ddlProduct.DataValueField = "Id"; ddlProduct.DataBind(); ddlProduct.Items.Insert(0, olst); } protected void ddlProduct_SelectedIndexChanged(object sender, EventArgs e) { Products objProducts = new Products(); dsProducts dsProduct = new dsProducts(); string criteria = ""; if (ddlProduct.SelectedItem.Text != " Select") { string id = ddlProduct.SelectedItem.Value; criteria = "Id='" + id + "'"; dsProduct = objProducts.GetDataset(criteria); productValue = Convert.ToDecimal(dsProduct.tblProducts.Rows[0]["Value"].ToString()); } }
提前致谢..
根据您的问题,如果我理解正确,您不希望下拉列表重新绑定,如果它已填充。 另外,请检查您的viewstate,除非您已禁用viewstate,否则不应该发生这种情况
protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack && ddlProduct.Items.count <=0 ) BindProductDdl();
}
将下拉列表的AppendDataBoundItems属性设置为true,这将允许您混合使用数据绑定项和非数据绑定项(否则插入语句将清除列表)
您是否在页面上禁用了viewstate? 由于您只是在第一次加载页面时将项目加载到下拉列表中,如果未启用viewstate,则回发后列表中将没有任何内容。
不是积极的,但我见过其他语言和错误的解释……
你有你的产品价值作为ToDecimal的转换,这意味着99.999。
如果您绑定的ID基于整数(即:整数),则绑定值将不匹配…即使Value = 1 vs Value = 1.00也不会匹配,也不会被考虑与您的列表匹配的有效“值”。 将您的答案转换为整数/整数,它可能会达到您的预期。
在没有看到页面的完整源代码的情况下,我只是在猜测,但您是否在页面上禁用了ViewState? 如果是这样,DropDownList不能在回发之间保留其值,并且每次都必须重新加载列表。