【发布时间】:2012-01-04 18:00:46
【问题描述】:
今天我发现了一个奇怪的问题,我试图触发 DropDownList SelectedIndexChanged 事件,但它根本不起作用。在检查了其他 DropDownLists 后,我注意到唯一的区别是它们是使用数据源填充的,而这个是在后端手动填充的。
这是我所拥有的:
<asp:DropDownList ID="DDDynAccount" runat="server"
onselectedindexchanged="DDDynAccount_SelectedIndexChanged"
AutoPostBack="true"></asp:DropDownList>
然后是加载时的Backcode:
DDDynAccount.Items.Add(new ListItem("ANY", "%"));
DDDynAccount.Items.Add(new ListItem("SELECT", "%"));
没有被触发的事件:
public void DDDynAccount_SelectedIndexChanged(object sender, EventArgs e) {
string s = ""; // I have a breackpoint here
}
如果我这样做,则永远不会触发该事件。 我试过设置和关闭 AutoPostBack。没有。 我尝试从头开始制作新控件。没有。 一旦我手动添加了它的项目但不使用数据源,我也尝试调用 Databind()。还是什么都没有。
我在同一页面中有另一个 DropDownList 有效。唯一的区别是那个使用的是数据源。所以我尝试了这个:
List<ListItem> ds = new List<ListItem>();
ds.Add(new ListItem("ANY", "%"));
ds.Add(new ListItem("SELECT", "%"));
DDDynAccount.DataSource = ds;
DDDynAccount.DataBind();
这会奏效的。
我的问题很简单。 为什么? 如果我不使用数据源,为什么我不能触发事件?还是有什么其他问题?
我在 Web 应用程序中使用 .Net4 和 C#。
更新:好的对不起,但是,在检查了这里编写的代码后,我意识到了一些细节,我手动添加的项目具有相同的值,更改它问题就解决了。我认为事件没有被触发,因为值没有改变,尽管“SelectedIndexChanged”不应该在值改变时触发,而是在索引改变时触发。
【问题讨论】: