下拉列表如何发现其所选索引已更改并需要触发所选索引更改事件?
假设我有一个与objectdatasource绑定的下拉列表 和objectdatasource有以下项目 OPT1 OPT2 OPT3 OPT4 然后我添加默认值--select--到objectdatasource,现在下拉列表被填充,我可以看到它上面的所有项目。我有一个按钮,在其客户端点击,通过java脚本我将opt4设置为选定的项目。现在,如果我从下拉列表中选择--select--那么它不会触发选定的索引更改事件,但它会触发下拉列表的数据绑定事件,然后如果我选择任何其他值,它将触发两个事件,然后如果我再次选择--select--然后它会触发这两个事件,只有第一次如果我选择 - 选择 - 然后它不会触发选定的索引更改事件,但如果我选择除了--select--它会触发两个事件。
所以我的问题是dorpdown如何发现它的选择指数已经改变了。
答案 0 :(得分:0)
如果includeStagesBeforeAsyncPoint为true,看起来OnSelectedIndexChanged应始终触发DropDownList回发
System.Web.UI.Page
private void ProcessRequestMain(bool includeStagesBeforeAsyncPoint, bool includeStagesAfterAsyncPoint) {
if (includeStagesBeforeAsyncPoint) {
...
if (this.IsPostBack) {
...
this.RaiseChangedEvents();
internal void RaiseChangedEvents() {
...
for (int i = 0; i < this._changedPostDataConsumers.Count; i++) {
...
postBackDataHandler.RaisePostDataChangedEvent();
}
}
System.Web.UI.WebControls.DropDownList
void IPostBackDataHandler.RaisePostDataChangedEvent()
{
this.RaisePostDataChangedEvent();
}
protected virtual void RaisePostDataChangedEvent() {
..
this.OnSelectedIndexChanged(EventArgs.Empty);
}