1

我有一个引发事件的用户控件,我想在其他地方捕获。

在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为空。

任何人都可以帮忙吗?

4

1 回答 1

0

我看到了这个问题,但我需要你解决一些问题或告诉我确切的上下文。

Albero_dll.FABRICANTES fab = (Albero_dll.FABRICANTES)e.Item.DataItem;

e.item.dataitem 将是您的用户控件的实例,因此 Albero_dll.FABRICANTES 应替换为您的用户控件名称。

App_Componentes_FabricanteArbol 树 = (App_Componentes_FabricanteArbol)e.Item.FindControl("treeMarca"); 是错误的,将不起作用

于 2012-12-09T03:11:28.717 回答