Trong lớp điều khiển người dùng của bạn, ghi đè OnBubbleEvent(). Nếu bạn trả về true, bạn sẽ dừng "bong bóng" lên các điều khiển chính.
protected override bool OnBubbleEvent(object source, EventArgs args)
{
//handled
return true;
//uncomment line below to bubble up (unhandled)
//return base.OnBubbleEvent(source, args);
}
Một điều hơi gọn gàng để suy nghĩ về điều đó tôi thấy trong khi mày mò về vấn đề này, mà có thể có ích trong một số trường hợp ... bạn có thể thay đổi tên lệnh đó là bong bóng lên 'trong heirachy kiểm soát là tốt. Trong điều khiển người dùng con của bạn, sử dụng OnCommand, thay vì Onclick.
Vì vậy, nói rằng bạn có một nút kiểm soát người dùng của bạn, thay đổi mã từ này:
<asp:button id="mySpecialButton"
onClick="mySpecialButton_OnClick" runat="server">
này:
<asp:Button id="mySpecialButton"
CommandName="mySpecialCommand"
CommandArgument="myArgument"
OnCommand="mySpecialButton_Command"
runat="server"/>
sau đó trong codebehind,
protected void mySpecialButton_Command(object sender, CommandEventArgs e)
{
RaiseBubbleEvent(this, new CommandEventArgs("Handled", e));
}
Vì vậy, trong trình điều khiển ItemCommand của trình điều khiển cha bạn, bạn sẽ nhận được tên lệnh mới này thay vì lệnh gốc e từ điều khiển con, mà bạn có thể thực hiện khi bạn thấy phù hợp.
James, Tôi dường như không thể tìm thấy thuộc tính Handled mà bạn đề cập đến. Hiện tại tôi đang cố gắng thực hiện điều này trong sự kiện nhấp chuột vào nút điều khiển của người dùng. Phương thức có chữ ký sau: Được bảo vệ Sub btnAddToCart_Click (Người gửi ByVal Là Đối tượng, ByVal e Là System.EventArgs) Xử lý btnAddToCart.Click e trong trường hợp này chỉ là EventArgs và nó không có thuộc tính được xử lý. Có nơi nào khác tôi nên cố gắng truy cập vào tài sản này không? – mclark1129