En su clase de control de usuario, anule OnBubbleEvent(). Si devuelve verdadero, detendrá el "aumento de burbuja" a los controles principales.
protected override bool OnBubbleEvent(object source, EventArgs args)
{
//handled
return true;
//uncomment line below to bubble up (unhandled)
//return base.OnBubbleEvent(source, args);
}
Otra cosa un poco aseado que pensar que encontré mientras retoques en esto, que podría ser útil en algunos casos ... puede cambiar el nombre del comando que 'se propaga hacia arriba' en el heirachy de control también. En el control de usuario de su hijo, use OnCommand, en lugar de Onclick.
Así, supongamos que tiene un botón en el control de usuario, cambie el código de esto:
<asp:button id="mySpecialButton"
onClick="mySpecialButton_OnClick" runat="server">
a esto:
<asp:Button id="mySpecialButton"
CommandName="mySpecialCommand"
CommandArgument="myArgument"
OnCommand="mySpecialButton_Command"
runat="server"/>
a continuación en el código subyacente,
protected void mySpecialButton_Command(object sender, CommandEventArgs e)
{
RaiseBubbleEvent(this, new CommandEventArgs("Handled", e));
}
Por lo tanto, en el controlador ItemCommand de tu control padre obtendrás este nuevo nombre de comando en lugar del comando nam original e desde el control infantil, con lo que puede hacer lo que considere oportuno.
James, Parece que no puedo encontrar la propiedad de Handled que mencionas. Actualmente estoy tratando de hacer esto dentro de un evento de clic de botón de control de usuario. El método tiene la firma siguiente: secundario protegido btnAddToCart_Click (remitente de ByVal como objeto, ByVal e As System.EventArgs) Maneja btnAddToCart.Click electrónico en este caso es sólo EventArgs y que no tiene una propiedad manejado. ¿Hay algún otro lugar donde debería intentar acceder a esta propiedad? – mclark1129