转发器中未触发的事件

问题描述 投票:0回答:1

我有一个 ASPX 页面和两个用户控件。它们都包含一个中继器。 ASPX 页面有一个用户控件,而该用户控件又在转发器内有另一个用户控件。 当我单击 usrMedlemRow.rptMedlemmar 中的一行时,应触发 showMedlemClick 事件。 但是,它似乎没有被触发,或者 usrMedlemslista 没有捕获它。 我做错了什么? ASPX页面上的代码:

<div class="row">
     <div class="col-9"><usr:Medlemslista runat="server" ID="usrMedlemsLista" /></div>
     <div class="col-3" style="border: 1px solid darkgray; background-color: white; padding: 0px; font-size: 12px; min-height: 700px;">
         <usr:MedlemsData runat="server" ID="usrMedlemsdata" Visible="false" />
     </div>
 </div>

用户控制 MedlemsLista 上的代码 (usrMedlemsLista):

  <asp:Repeater runat="server" ID="rptFastigheter">
       <HeaderTemplate />
        <ItemTemplate>
            <asp:Label runat="server" ID="lblFastighet" Text='<%#DataBinder.Eval(Container.DataItem, "Fastighetsbeteckning")%>' Visible="false" />                <usr:MedlemsRow runat="server" ID="usrMedlemsRow" />
        </ItemTemplate>
        <FooterTemplate />
    </asp:Repeater>

隐藏代码:

    Public Event showMedlemClick2 As EventHandler
    Protected Sub rptFastigheter_ItemDataBound(S As Object, e As RepeaterItemEventArgs) Handles rptFastigheter.ItemDataBound
        If e.Item.ItemType = ListItemType.Item Then
            Dim control As MedlemRow = DirectCast(e.Item.FindControl("usrMedlemsRow"), MedlemRow)
            AddHandler control.showMedlemClick, AddressOf showMedlem2
        End If
    End Sub
    Protected Sub showMedlem2(s As Object, e As CommandEventArgs)
        Dim _eventCommands As New CommandEventArgs("MedlemsID", e.CommandArgument)
        RaiseEvent showMedlemClick2(Me, _eventCommands)
    End Sub

用户控件 MedlemRow 上的代码:

    <asp:Repeater runat="server" ID="rptMedlemmar">
        <HeaderTemplate><div class="row"></HeaderTemplate>
        <ItemTemplate>
            <div class="col-1"><asp:LinkButton runat="server" ID="lnkNr" Text='<%#DataBinder.Eval(Container.DataItem, "Nr")%>' CommandArgument='<%#DataBinder.Eval(Container.DataItem, "MedlemsID")%>' OnCommand="showMedlem" /></div>
            <div class="col-2"><asp:LinkButton runat="server" ID="LinkButton1" Text='<%#DataBinder.Eval(Container.DataItem, "Fastighetsbeteckning")%>' CommandArgument='<%#DataBinder.Eval(Container.DataItem, "MedlemsID")%>' OnCommand="showMedlem" /></div>
            <div class="col-3"><asp:LinkButton runat="server" ID="LinkButton2" Text='<%#DataBinder.Eval(Container.DataItem, "Namn")%>' CommandArgument='<%#DataBinder.Eval(Container.DataItem, "MedlemsID")%>' OnCommand="showMedlem" /></div>
            <div class="col-2"><asp:LinkButton runat="server" ID="LinkButton3" Text='<%#fixMobil(DataBinder.Eval(Container.DataItem, "Mobil"))%>' CommandArgument='<%#DataBinder.Eval(Container.DataItem, "MedlemsID")%>' OnCommand="showMedlem" /></div>
            <div class="col-3"><asp:LinkButton runat="server" ID="LinkButton4" Text='<%#DataBinder.Eval(Container.DataItem, "Epost")%>' CommandArgument='<%#DataBinder.Eval(Container.DataItem, "MedlemsID")%>' OnCommand="showMedlem" /></div>
            <div class="col-1">&nbsp;</div>
        </ItemTemplate>
        <FooterTemplate></div></FooterTemplate>
    </asp:Repeater>

隐藏代码:

    Public Event showMedlemClick As EventHandler
   Protected Sub showMedlem(s As Object, e As CommandEventArgs)
        Dim _eventCommands As New CommandEventArgs("MedlemsID", e.CommandArgument)
        RaiseEvent showMedlemClick(Me, _eventCommands)
    End Sub

请帮助我,我真的很困难。

asp.net repeater eventhandler
1个回答
0
投票

尝试添加

runat="server"

到你的div。另外,您可能会考虑将

OnCommand
更改为
OnClick
,但这由您决定。

© www.soinside.com 2019 - 2024. All rights reserved.