2009-08-19 48 views
0

我有一個下拉列表,出現在我的網站。出於代碼重用性的目的,我將其作爲服務器控件。 一切都很好。不過,我想補充一個事件處理程序的SelectedIndexChanged服務器控制事件處理程序?

這不是爲我工作:

this.OnSelectedIndexChanged = "CultureSelectorControl1_SelectedIndexChanged"; 

依次爲:

protected void CultureSelectorControl1_SelectedIndexChanged(object sender, EventArgs e) 
     { 
      // code here 
     } 

請讓我知道在這裏改變。謝謝!

+0

以上代碼是擴展名爲.cs的文件(服務器控件)還是擴展名爲.ascx的文件(用戶控件)。我知道你說過服務器控制,但我只是想在回答之前確認一下。謝謝。 – 2009-08-19 02:56:04

回答

0

看起來像是混淆了與代碼等效的事件連接的標記語法。如果你是子類的DropDownList,那麼就使用此代碼爲內部處理事件:

protected override void OnSelectedIndexChanged(EventArgs e) 
{ 
    // do your stuff here 

    // notify other subscribers 
    base(e); 
} 

控制不應該訂閱自己的事件。

如果您使用的是用戶控制,而不是其中包含DropDownList控件,並且希望在用戶控件來處理該事件,那麼您可以做這種方式的代碼Page_Init期間:

protected void Page_Init(object sender, EventArgs e) 
{ 
    CultureSelectorControl1.SelectedIndexChanged += CultureSelectorControl1_SelectedIndexChanged; 
}

或者在DropDownList的標記上:

+0

謝謝山姆!這很好! – aron 2009-08-19 12:21:32

相關問題