如何在嵌套中继器中获得LinkButton文本

本文关键字:LinkButton 文本 中继器 嵌套 | 更新日期: 2023-09-27 18:16:33

在嵌套中继器中获取LinkButton文本有问题

<div>
        <asp:Repeater ID="rp_resList" runat="server" OnItemDataBound="rp_resList_ItemDataBound">
                <ItemTemplate>
                    <div class="resourcesResult">
                        <asp:HiddenField ID="hf_resID" runat="server" Value='<%#  Eval("Id") %>' />
                        <a href='<%#  Eval("pageID") %>'><%#  Eval("name") %></a>
                        <br />
                        <asp:Literal ID="litSummary" runat="server" Text='<%#  Eval("summary") %>'></asp:Literal>
                        <br />
                        <asp:Repeater ID="rp_tagsTopics" runat="server">
                            <ItemTemplate>
                                <h6>
                                    <asp:LinkButton ID="lnkBtnTags" runat="server" Text=' <%#  Container.DataItem %>' OnClick="LinkButton1_Click" > <%#  Container.DataItem %></asp:LinkButton>
                                </h6>
                            </ItemTemplate>
                        </asp:Repeater>
                    </div>
                </ItemTemplate>
        </asp:Repeater>
</div>


protected void LinkButton1_Click(object sender, EventArgs e)
    {
        LinkButton lnkBtnTags = (LinkButton)rp_tagsTopics.FindControl("lnkBtnTags");
        Response.Redirect("~/WebsofWonder.aspx?tag=" + lnkBtnTags.Text);
    }

如何在嵌套中继器中获得LinkButton文本

或者您可以通过指定LinkButton的CommandName和CommandArgument参数来使用ItemCommand事件

<asp:LinkButton ID="lnkBtnTags" runat="server" Text=' <%#  Container.DataItem %>' OnClick="LinkButton1_Click" CommandName="Redirect" CommandArgument='<%# Container.DataItem %>' > <%#  Container.DataItem %></asp:LinkButton>

在处理程序中使用参数:

protected void rp_tagsTopics_ItemCommand(object sender, RepeaterCommandEventArgs e)
{
    if( e.CommandName == "Redirect" )
    {
        Response.Redirect("~/WebsofWonder.aspx?tag=" + e.CommandArgument);
    }
}

您应该做的是使用LinkButton_Click处理程序中的sender参数来访问实际单击的LinkButton实例,并引发Click事件:

protected void LinkButton1_Click(object sender, EventArgs e)
{
    // Use sender instead of trying to find the control within the Repeater
    LinkButton lnkBtnTags = (LinkButton) sender;
    Response.Redirect("~/WebsofWonder.aspx?tag=" + lnkBtnTags.Text);
}