下拉清除

时间:2010-11-15 16:41:42

标签: c# asp.net drop-down-menu

我有一个asp.net应用程序,其中有一个下拉列表绑定到数据集。但是在选择一个项目后,下拉列表会清除所有值,我们如何解决此问题?

这是我在设计页面中的下拉列表:

<asp:DropDownList ID="ddlProduct" runat="server" CssClass="textEntry" Width="300px"
            AutoPostBack="True" OnSelectedIndexChanged="ddlProduct_SelectedIndexChanged">

        </asp:DropDownList>

和绑定代码如下所示。

 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());
        }

    }

提前致谢..

5 个答案:

答案 0 :(得分:1)

将下拉列表的AppendDataBoundItems属性设置为true,这将允许您混合使用数据绑定项和非数据绑定项(否则插入语句将清除列表)

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

答案 1 :(得分:1)

如果我理解正确你的问题,你不希望下拉列表重新绑定,如果它已填充。另外请检查您的viewstate,除非您已禁用viewstate

,否则不应该这样做
 protected void Page_Load(object sender, EventArgs e)
{        
  if (!IsPostBack && ddlProduct.Items.count <=0 )
        BindProductDdl();

}

答案 2 :(得分:0)

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

答案 3 :(得分:0)

不是正面的,但我已经看过其他语言和错误的解释......

您的产品价值为ToDecimal的转换,例如99.999。

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

答案 4 :(得分:0)

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