获取Repeter的Item和ItemIndex

首先看看效果:

 Repeater控件,放在ItemTemplate内的铵钮OnClick之后,获取Repeater的Item,ItemIndex,CommandArgument,CommandName以及绑定的字段值。

准备数据:

View Code
 1 Imports Microsoft.VisualBasic
 2 Namespace Insus.NET
 3 
 4     Public Class Catalog
 5 
 6         Private _ID As Integer
 7         Private _Name As String
 8 
 9         Public Property ID As Integer
10             Get
11                 Return _ID
12             End Get
13             Set(value As Integer)
14                 _ID = value
15             End Set
16         End Property
17 
18         Public Property Name As String
19             Get
20                 Return _Name
21             End Get
22             Set(value As String)
23                 _Name = value
24             End Set
25         End Property
26 
27     End Class
28 End Namespace
View Code
 1  Private Function GetData() As List(Of Catalog)
 2         Dim cls As New List(Of Catalog)
 3 
 4         Dim cl As Catalog = New Catalog()
 5         cl.ID = 1
 6         cl.Name = "汽车"
 7         cls.Add(cl)
 8 
 9         cl = New Catalog()
10         cl.ID = 2
11         cl.Name = "时尚"
12         cls.Add(cl)
13 
14         cl = New Catalog()
15         cl.ID = 3
16         cl.Name = "科技"
17         cls.Add(cl)
18 
19         cl = New Catalog()
20         cl.ID = 5
21         cl.Name = "文化"
22         cls.Add(cl)
23 
24         cl = New Catalog()
25         cl.ID = 6
26         cl.Name = "公益"
27         cls.Add(cl)
28         Return cls
29     End Function


在.aspx放置Repeater控件:

View Code
 <asp:Repeater ID="RepeaterCatalog" runat="server">
                <HeaderTemplate>
                    <table border="1" cellpadding="3" cellspacing="0">
                        <tr>
                            <td>ID
                            </td>
                            <td>Name
                            </td>
                            <td>Choose</td>
                        </tr>
                </HeaderTemplate>
                <ItemTemplate>
                    <tr>
                        <td>
                            <asp:Label ID="LabelID" runat="server" Text='<%# Eval("ID")%>'></asp:Label>
                        </td>
                        <td>
                            <asp:Label ID="LabelName" runat="server" Text='<%# Eval("Name")%>'></asp:Label>
                        </td>
                        <td>
                            <asp:Button ID="Button1" runat="server" Text="Select" OnClick="Button1_Click" CommandArgument='<%# Eval("ID")%>' CommandName="Choose" />
                        </td>
                    </tr>
                </ItemTemplate>
                <FooterTemplate>
                    </table>
                </FooterTemplate>
            </asp:Repeater>          


在.aspx.vb为Repeater控件绑定数据:

View Code
Imports Insus.NET

Partial Class Default2
    Inherits System.Web.UI.Page
    Protected Sub Page_Load(sender As Object, e As EventArgs) Handles Me.Load
        If Not IsPostBack Then
            Data_Binding()
        End If
    End Sub

    Private Sub Data_Binding()
        Me.RepeaterCatalog.DataSource = GetData()
        Me.RepeaterCatalog.DataBind()
    End Sub

End Class


接下来,我们写onclick事件,在写事件之前,先在.aspx放一个Label来显示事件结果:

View Code
Process infor:
<asp:Label ID="LabelInfo" runat="server" Text=""></asp:Label>
View Code
 Protected Sub Button1_Click(sender As Object, e As EventArgs)
        Dim btn As Button = DirectCast(sender, Button)

        Dim commandArgument As String = btn.CommandArgument

        Dim commandName As String = btn.CommandName

        Dim item As RepeaterItem = DirectCast(btn.NamingContainer, RepeaterItem)

        Dim index As Integer = item.ItemIndex


        Dim id As String = DirectCast(item.FindControl("LabelID"), Label).Text
        Dim name As String = DirectCast(item.FindControl("LabelName"), Label).Text

        Me.LabelInfo.Text = String.Format("Item index: {0}; CommandArgument: {1}; CommandName: {2}; ID: {3}; Name: {4};", index, commandArgument, commandName, id, name)

    End Sub


 

原文地址:https://www.cnblogs.com/insus/p/2863503.html