我有一个用户控件来引发一个事件,我想在其他地方捕获。
在aspx中我有;
<asp:Repeater runat="server" ID="rptMarcas" OnItemDataBound="rptMarcas_OnItemDataBound">
<ItemTemplate>
<uc1:FabricanteArbol runat="server" ID="treeMarca"/>
</ItemTemplate>
</asp:Repeater>
在aspx.cs中
protected void rptMarcas_OnItemDataBound(object sender, RepeaterItemEventArgs e)
{
if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
{
Albero_dll.FABRICANTES fab = (Albero_dll.FABRICANTES)e.Item.DataItem;
App_Componentes_FabricanteArbol tree = (App_Componentes_FabricanteArbol)e.Item.FindControl("treeMarca");
tree.cargar(fab);
tree.OnSelectedNodeClicked += new EventHandler(OnSelectedNodeClicked);
}
}
在用户控件中;
public event EventHandler OnSelectedNodeClicked;
if (OnSelectedNodeClicked != null)
{
CatalogoChangedEventArgs eCat = new CatalogoChangedEventArgs(e, SesionManager.posCatalogo, irPagina);
OnSelectedNodeClicked(this, eCat);
}
但始终OnSelectedNodeClicked
为空。
有人可以帮忙吗?
答案 0 :(得分:0)
我看到了这个问题,但我需要你解决一些问题或告诉我确切的背景。
Albero_dll.FABRICANTES fab = (Albero_dll.FABRICANTES)e.Item.DataItem;
e.item.dataitem将是您的usercontrol的实例,因此Albero_dll.FABRICANTES应替换为您的用户控件名称。
App_Componentes_FabricanteArbol tree =(App_Componentes_FabricanteArbol)e.Item.FindControl(“treeMarca”);是错的,不会起作用