dropdown如何发现其所选索引已更改并需要触发所选索引更改事件?

时间:2011-02-17 11:40:00

标签: asp.net

下拉列表如何发现其所选索引已更改并需要触发所选索引更改事件?

假设我有一个与objectdatasource绑定的下拉列表 和objectdatasource有以下项目 OPT1 OPT2 OPT3 OPT4 然后我添加默认值--select--到objectdatasource,现在下拉列表被填充,我可以看到它上面的所有项目。我有一个按钮,在其客户端点击,通过java脚本我将opt4设置为选定的项目。现在,如果我从下拉列表中选择--select--那么它不会触发选定的索引更改事件,但它会触发下拉列表的数据绑定事件,然后如果我选择任何其他值,它将触发两个事件,然后如果我再次选择--select--然后它会触发这两个事件,只有第一次如果我选择 - 选择 - 然后它不会触发选定的索引更改事件,但如果我选择除了--select--它会触发两个事件。

所以我的问题是dorpdown如何发现它的选择指数已经改变了。

1 个答案:

答案 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);
}