【发布时间】:2010-09-16 00:34:55
【问题描述】:
请注意,下面描述的问题几乎与常见问题“我的控件在每次页面加载时显示相同的值。我理解所表达的行为通常是不可取的。
我有一个列表框,即使在回发时,它也在页面加载事件中被数据绑定。
当 selectedindex 更改的事件处理程序被命中时,控件以某种方式具有发布的值,即使它已经再次绑定并且此时不应具有 selectedindex。
有谁知道这是怎么可能的。
编辑:
要证明 SelectedIndex 确实已重置,您可以使用以下简单标记创建一个表单:
<label for="textbox1">Original Posted Value: </label>
<asp:TextBox runat="server" ID="textbox1" />
<asp:DropDownList runat="server" ID="dropdown" OnSelectedIndexChanged="dropdown_SelectedIndexChanged" AutoPostBack="true" />
<label for="textbox2">Value at point handler is hit: </label>
<asp:TextBox runat="server" ID="textbox2" />
在.cs中使用以下代码
protected void Page_Load(object sender, EventArgs e)
{
textbox1.Text = dropdown.SelectedIndex.ToString();
dropdown.DataSource = new string[] { "none", "A", "B", "C" };
dropdown.DataBind();
}
protected void dropdown_SelectedIndexChanged(object sender, EventArgs e)
{
textbox2.Text = dropdown.SelectedIndex.ToString();
}
请注意,第二个文本框中的值始终为 0。
【问题讨论】: