【问题标题】:Raise event from user control inside repeater从中继器内的用户控件引发事件
【发布时间】:2012-11-26 17:40:54
【问题描述】:

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

我有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 总是为空。

谁能帮忙?

【问题讨论】:

    标签: c# asp.net events repeater


    【解决方案1】:

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

    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");是错误的,不会工作

    【讨论】:

    • 嗨@Soner Gönül,感谢您的回答。我只需要添加 OnSelectedNodeClicked="MiOnSelectedNodeClicked" 就可以了。 '​​ '
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多