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);
}

しかし、常にOnSelectedNodeClickednull です。

誰でも助けることができますか?

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 に答える