简体   繁体   English

如何在后台代码中的Repeater控件中获取对标签的引用

[英]How to get a reference to a label in a Repeater control in code-behind

<asp:repeater id="rpt" run="server">
<ItemTemplate>
<asp:LinkButton id="Delete" runat="server" OnCommand="Delete_Command"></asp:linkButton>
<asp:label id="lblMessage" run="server">
</ItemTemplate>
</asp:repeater>

Code Behind: 背后的代码:

protected void Delete_Command(object sender, CommandEventArgument e)
{

}

How can I get a reference to the "lblMessage" in Delete_Command? 如何在Delete_Command中引用“ lblMessage”?

I would recommend reorganize your code a little bit, which will allow you to perform such operations easily using FindControl . 我建议稍微重组一下代码,这将使您可以使用FindControl轻松执行此类操作。 Basically my suggestion boils down to handling Command event not of the link button, but of the repeater itself: 基本上,我的建议可以归结为处理Command事件,而不是链接按钮,而是转发器本身:

<asp:repeater id="rpt" run="server" OnItemCommand="rpt_ItemCommand">

Then access to item contents is extremely easy: 然后,访问项目内容非常简单:

protected void rpt_ItemCommand(object sender, RepeaterCommandEventArgs e)
{
    Label label = e.Item.FindControl("lblMessage");
    LinkButton linkButton = e.Item.FindControl("Delete");
}

You can try this : 您可以尝试以下方法:

Page : 页面:

<asp:Repeater ID="rpt" runat="server" OnItemCommand="rpt_ItemCommand">
<ItemTemplate>
    <asp:LinkButton ID="Delete" runat="server" CommandName="Delete"></asp:LinkButton>
    <asp:Label ID="lblMessage" runat="server"/>
</ItemTemplate>

Code Behind : 背后的代码:

protected void rpt_ItemCommand(object source, RepeaterCommandEventArgs e)
{
    if (e.CommandName == "Delete")
    {
        Label lblMessage = e.Item.FindControl("lblMessage") as Label;
    }
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM