0
<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>

代码背后:

protected void Delete_Command(object sender, CommandEventArgument e)
{

}

我如何在 Delete_Command 中获得对“lblMessage”的引用。

4

3 回答 3

2

尝试这个:

protected void Delete_Command(object sender, CommandEventArgs e)
{
    LinkButton button = (LinkButton)sender;
    Label label = (Label)button.NamingContainer.FindControl("lblMessage");
    // do something with the label
}

如果你:

  1. 已绑定中继器
  2. 启用 ViewState
  3. 不要在回帖中重新绑定转发器

这应该有效。如果不是,请验证标签的 id 确实与...FindControl("lblMessage");. 还要确保runat="server"在所有涉及的控件上都设置了它。

编辑:要检查的另一件事:搜索标记文件(.aspx 文件)并检查是否有任何其他控件也在后面的代码中使用相同的事件。如果另一个控件正在使用相同的事件处理程序并且该控件不在转发器中,则将找不到标签。

于 2013-07-09T06:27:11.867 回答
0

如果您想以自己的方式制作,请使用以下代码

protected void Repeater1_ItemCommand(object source, CommandEventArgs e)
        {

             (((LinkButton)source).NamingContainer).FindControl("lblName")

        }

另一种方法..但是你可以买的东西

aspx

<asp:Repeater ID="Repeater1" runat="server" 
        onitemcommand="Repeater1_ItemCommand">
        <ItemTemplate>
      <asp:Label ID="lblName" runat="server" Text='<%=Eval("Name") %>' ></asp:Label>
      <asp:LinkButton runat="server"  CommandName="Delete_Command" Text="sd"></asp:LinkButton>
        </ItemTemplate>
    </asp:Repeater>

。CS

 protected void Delete_Command(object sender, CommandEventArgument e)
    {
          if(e.CommandName != null)// Conditional Check
          {    
               Label label = e.Item.FindControl("lblMessage");
               // do something with the label
          }
   }
于 2013-07-09T06:45:28.047 回答
0

意味着你想在 Delete_Command 事件中找到一个标签吗?

在 aspx 中

 <asp:Repeater ID="rpt" runat="server">
    <ItemTemplate>
        <asp:LinkButton ID="Delete" runat="server" OnCommand="Delete_Command"></asp:LinkButton>
        <asp:Label ID="lblMessage" run="server">
    </ItemTemplate>
</asp:Repeater>

在 aspx.cs 中

 protected void Delete_Command(object sender, CommandEventArgs e)
    {
        foreach (RepeaterItem item in rpt.Items)
        {
            Label lblMessage = item.FindControl("lblMessage") as Label;
            if (lblMessage != null)
            {
                lblMessage.Text = "";
            }
        }
    }
于 2013-07-09T06:20:14.877 回答