下拉清除

我有一个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,这将允许您混合使用数据绑定项和非数据绑定项(否则插入语句将清除列表)

http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.listcontrol.appenddatabounditems.aspx

您是否在页面上禁用了viewstate? 由于您只是在第一次加载页面时将项目加载到下拉列表中,如果未启用viewstate,则回发后列表中将没有任何内容。

不是积极的,但我见过其他语言和错误的解释……

你有你的产品价值作为ToDecimal的转换,这意味着99.999。

如果您绑定的ID基于整数(即:整数),则绑定值将不匹配…即使Value = 1 vs Value = 1.00也不会匹配,也不会被考虑与您的列表匹配的有效“值”。 将您的答案转换为整数/整数,它可能会达到您的预期。

在没有看到页面的完整源代码的情况下,我只是在猜测,但您是否在页面上禁用了ViewState? 如果是这样,DropDownList不能在回发之间保留其值,并且每次都必须重新加载列表。