2009-08-19 13 views
0

Ich habe eine Dropdown-Liste, die auf meiner Website angezeigt wird. Für Code-Wiederverwendbarkeitszwecke habe ich es zu einem Server Control gemacht. Alles hat gut funktioniert. Allerdings würde Ich mag ein Event-Handler hinzufügen für SelectedIndexChangedServersteuerung Event Handler?

Dies ist nicht für mich arbeiten:

this.OnSelectedIndexChanged = "CultureSelectorControl1_SelectedIndexChanged"; 

gefolgt von:

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

Bitte lassen Sie mich wissen, was hier zu ändern. Vielen Dank!

+0

Ist der Code oben in einer Datei mit der Erweiterung .cs (Server-Steuerung) oder in einer Datei mit der Erweiterung .ascx (Benutzerkontrolle). Ich weiß, dass Sie die Serverkontrolle angegeben haben, aber ich wollte nur bestätigen, bevor ich antworte. Vielen Dank. –

Antwort

0

Es sieht so aus, als ob Sie die Markup-Syntax für Ereignis-Hookups mit dem entsprechenden Code verwechseln. Wenn Sie Dropdown sind Subklassen, dann benutzen Sie einfach diesen Code für den Umgang mit der Veranstaltung intern:

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

    // notify other subscribers 
    base(e); 
} 

Kontrollen sollten nicht auf ihre eigenen Veranstaltungen abonnieren.

Wenn Sie eine Benutzersteuerung statt verwenden, die das Dropdownlist-Steuerelement enthält, und Sie wollen das Ereignis in der Benutzersteuerung zu handhaben, dann können Sie entweder tun es auf diese Weise in Code während Page_Init:

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

Or auf dem Markup für das Dropdownlist:

<asp:DropDownList ID="CultureSelectorControl1" Runat="server" OnSelectedIndexChanged="CultureSelectorControl1" />
+0

Danke Sam! Das hat super funktioniert! – aron