如何获取Dropdownlist的立即选择值?

时间:2014-02-08 12:54:53

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

我有2个下拉列表,其中两个都有自动回发为真。 当我从dropdown1中选择时,它向dropdown2发送一个id,dropdown2显示与该id相对应的数据。 但问题是,当页面第一次启动时它没有显示,并且它始终显示以前选择的项目值。

就像页面加载时一样,它自动在dropdown1中选择“sayd”。为此,它在另一个dropdown2中选择相应的名称。但是当我启动应用程序时,它没有显示默认值的选定值。当我手动选择时,显示上一个选定的值。

我不知道为什么会发生这种情况,有什么解决方案可以建议吗?

protected void Page_Load(object sender, EventArgs e)
{ 
     if (!Page.IsPostBack) 
     { 
           ddwcategory.DataBind(); 
           ddwsubcat.DataBind();
     }
     else 
     {
           if (ddwsubcat.Items.Count <= 1)
           {
                 ddwsubcat.SelectedIndex = -1;
                 ddwsubcat.DataBind();
           } 
           Label1.Text = ddwsubcat.SelectedValue;
     }
}

4 个答案:

答案 0 :(得分:0)

似乎是一个PostBack问题。我建议您通过检查页面加载上的DropDownList属性来绑定您的第一个IsPostBack

此外,调试代码并检查每个测试用例,如您所解释的那样。标记执行哪些事件和函数以及将哪些值添加到DropDownLists

答案 1 :(得分:0)

Postback方法:

中添加Page_Load条件
protected void Page_Load(object sender, EventArgs e)
{
    if(!Page.IsPostback)
    {
        //fill dropdown mehtod
    }
}

答案 2 :(得分:0)

那件事确实奏效了。

if (!Page.IsPostBack)
    {

        ddwcategory.DataBind();
        ddwsubcat.DataBind();

    }
    else
    {
        if (ddwsubcat.Items.Count <= 1)
        {
            ddwsubcat.SelectedIndex = -1;
            ddwsubcat.DataBind();
        }
      //  Label1.Text = ddwsubcat.SelectedValue;
        //ddwsubcat.DataBind();
    }
    String subcat = ddwsubcat.SelectedValue;

答案 3 :(得分:0)

您的部分代码超出!PostBack条件。

protected void Page_Load(object sender, EventArgs e)
{ 
     if (!Page.IsPostBack) 
     { 
          // Bind your dropdownlists on page Load event
          ddwcategory.DataBind(); 
          ddwsubcat.DataBind();
          // Set default index if required

          Label1.Text = ddwsubcat.SelectedValue;
     }
}