1

我在我的 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
4

1 回答 1

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 中,上述事件处理程序将触发。

于 2012-05-18T18:07:14.157 回答