2011-02-17 37 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); 
} 
相關問題