Nella classe di controllo utente, sovrascrive OnBubbleEvent(). Se si restituisce true, si interromperà il "bubble up" ai controlli padre.
protected override bool OnBubbleEvent(object source, EventArgs args)
{
//handled
return true;
//uncomment line below to bubble up (unhandled)
//return base.OnBubbleEvent(source, args);
}
Un'altra cosa in qualche modo pulito per pensare che ho trovato mentre armeggiare su questo, che potrebbe essere utile in alcuni casi ... è possibile modificare il nome del comando che 'sgorga' nel heirachy di controllo pure. Nel controllo utente figlio, usa OnCommand, anziché Onclick.
Quindi, supponiamo di avere un pulsante il controllo utente, modificare il codice da questa:
<asp:button id="mySpecialButton"
onClick="mySpecialButton_OnClick" runat="server">
a questo:
<asp:Button id="mySpecialButton"
CommandName="mySpecialCommand"
CommandArgument="myArgument"
OnCommand="mySpecialButton_Command"
runat="server"/>
poi nel codebehind,
protected void mySpecialButton_Command(object sender, CommandEventArgs e)
{
RaiseBubbleEvent(this, new CommandEventArgs("Handled", e));
}
Quindi, nel comando ItemCommand del controllo genitore otterrete questo nuovo nome di comando anziché il nome del comando originale e dal controllo figlio, che puoi fare come ritieni opportuno.
James, Non riesco a trovare la proprietà Handled citata. Attualmente sto cercando di farlo all'interno di un evento click del pulsante di un controllo utente. Il metodo ha la seguente firma: Sottotitolo protetto BtnAddToCart_Click (Sender ByVal As Object, ByVal e As System.EventArgs) Gestisce btnAddToCart.Click e in questo caso è solo EventArgs e non ha una proprietà gestita. C'è qualche altra cosa che dovrei provare ad accedere a questa proprietà? – mclark1129