【问题标题】:changing label on linkbutton click inside repeater更改链接按钮上的标签单击中继器内部
【发布时间】:2013-03-16 07:26:25
【问题描述】:

我在我的 asp.net 页面中使用了一个 asp.net 中继器,如下所示:

 <asp:Repeater ID="Repeater1" runat="server">
                <ItemTemplate>
                         <asp:Label ID="lblsSICCode" runat="server" Text='<%# Eval("sSICCode") %>'></asp:Label>
                <asp:LinkButton ID="lnkSelect" runat="server" CommandArgument='<%# Eval("sSICCode") %>' OnCommand="LinkButton1_Command" CommandName="MyUpdate">Select</asp:LinkButton>
                 <asp:Label ID="Label1" runat="server" Text='<%# Eval("sSICCode") %>'></asp:Label>
                </ItemTemplate>
            </asp:Repeater>

我想在单击链接按钮时更改标签文本。我正在使用以下代码,但它会更改所有中继器的标签。所选行前面的 Label1 应获取 mylabel 的值。

 Protected Sub LinkButton1_Command(sender As Object, e As CommandEventArgs)
    If e.CommandName = "MyUpdate" Then
        For Each RI As RepeaterItem In Repeater1.Items
            Dim MyLabel As Label = TryCast(RI.FindControl("lblsSICCode"), Label)

            If MyLabel IsNot Nothing Then

                If MyLabel.Text = e.CommandArgument Then
                    Response.Write(e.CommandArgument + "<br />")
                End If

            End If
        Next

    End If
End Sub

【问题讨论】:

  • 您实际上并没有将循环限制在您关心的特定项目上;它正在执行所有内容的内容。您需要检查您想要的特定项目是否是正确的索引/是否包含适合您情况的正确元素等。

标签: asp.net vb.net


【解决方案1】:

在 LinkBut​​ton1 中放置一个命令参数,其中包含中继器项目的索引。接下来像在右侧的中继器项中一样找到 Label 控件。

编辑:尝试这样的事情:

Private Sub Repeater1_ItemCommand(source As Object, e As System.Web.UI.WebControls.RepeaterCommandEventArgs) Handles Repeater1.ItemCommand
    If e.CommandName.Equals("MyUpdate") Then
        Dim MyLabel As Label = TryCast(e.Item.FindControl("lblsSICCode"), Label)
        Dim Label1 As Label = TryCast(e.Item.FindControl("Label1"), Label)

        If MyLabel IsNot Nothing Then
            Label1.Text = MyLabel.Text
        End If
    End If
End Sub

如果您将 CommandName 留在中继器内的 Linkbutton 中,上述事件处理程序将触发。

【讨论】:

  • 请查看更新后的问题。我希望 label1 在选择单击时填充 mylaebl 值
  • 查看更新后的帖子。不要为链接按钮创建事件处理程序,而是为转发器创建一个。如果您单击链接按钮,ItemCommand 将触发。确保 CommandName="MyUpdate" 保留在 Linkbutton 标记内。此代码的性能也更高,因为您不需要遍历所有中继器项。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-07-02
  • 2013-10-16
  • 2010-12-18
  • 1970-01-01
  • 1970-01-01
  • 2014-01-04
相关资源
最近更新 更多