我有一个下拉列表,我在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。怎么了?
答案 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;
}