在回发后保留动态绑定下拉列表的选定值

时间:2012-04-30 20:55:32

标签: asp.net drop-down-menu selectedvalue

我有一个下拉列表,我在aspx标记上声明如下:

<asp:DropDownList ID="State" runat="server"></asp:DropDownList>

然后我在页面加载上绑定它,如下所示:

protected void Page_Load(object sender, EventArgs e)
    {
       BindDropdowns();
    }
private void BindDropdowns()
    {
        State.DataSource = DataAccess.GetStates();
        State.DataValueField = "FieldId";
        State.DataTextField = "FieldName";
        State.DataBind();
    }

回发后不保留所选值,我也无法触发selectedindexchangedevent。怎么了?

2 个答案:

答案 0 :(得分:5)

请更改您的代码:

protected void Page_Load(object sender, EventArgs e)
{
   if (!Page.IsPostback)
       BindDropdowns();
}

这意味着您的下拉控件仅在第一页加载时绑定一次

答案 1 :(得分:2)

您必须使用AutoPostBack="true"

<asp:DropDownList ID="State" AutoPostBack="true" 
 runat="server"></asp:DropDownList>

还说出女巫事件处理程序是这样的:

<asp:DropDownList ID="State" AutoPostBack="true" 
OnSelectedIndexChanged="State_SelectedIndexChanged" 
runat="server"></asp:DropDownList>

然后在代码中。只是在不回帖时绑定:

protected void Page_Load(object sender, EventArgs e)
{
   if (!Page.IsPostback)
       BindDropdowns();
}

protected void State_SelectedIndexChanged(object sender, System.EventArgs e)  
{  
    var somevalue= State.SelectedValue;  
}