我有我的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。 怎么了 ?
请改变你这样的代码:
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostback)
BindDropdowns();
}
这意味着,在第一次页面加载你的下拉控件只能被绑定一次
你必须使用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;
}