1

我在嵌套中继器中获取 LinkBut​​ton 文本时遇到问题

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

2 回答 2

1

或者,您可以通过指定 LinkBut​​ton 的 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);
    }
}
于 2013-06-03T19:44:45.380 回答
0

您应该做的是使用处理程序中的sender参数LinkButton_Click来访问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);
}
于 2013-06-03T19:32:20.623 回答