我有一个 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"> </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
请帮助我,我真的很困难。
尝试添加
runat="server"
到你的div。另外,您可能会考虑将
OnCommand
更改为 OnClick
,但这由您决定。