2011-02-17 24 views
0

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

假设我有哪些是有界与ObjectDataSource控件 和ObjectDataSource下拉有以下项目 OPT1 OPT2 OPT3 OPT4 然后我说默认值 - 选择 - 到ObjectDataSource控件,现在下拉填充,我可以看到它上面的所有物品。我有一个按钮,并在其客户端单击,通过Java脚本我设置opt4选定的项目。现在如果我从下拉列表中选择--select--那么它不会触发选定索引更改的事件,但会触发下拉菜单的数据绑定事件,然后如果我选择任何其他值,则会触发这两个事件,然后如果再次选择--select--那么它会触发这两个事件,只有第一次如果我选择--select - 那么它不会触发选定的索引更改事件,但是如果我选择的不是--select--它会触发这两个事件。

所以我的问题是如何杜波找出它的选择指数已经改变。

+0

没有得到你你能更清楚 – Dotnet 2011-02-17 12:15:27

+0

@Dorababu:问题已更新。 – 2011-02-18 03:19:51

回答

0

看起来OnSelectedIndexChanged应该总是在一个DropDownList回传火,如果includeStagesBeforeAsyncPoint是真的

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); 
} 
相关问题