获取Repeter的Item和ItemIndex/CommandArgument实现思路与代码

时间:2022-09-18 18:07:34

首先看看效果: 
获取Repeter的Item和ItemIndex/CommandArgument实现思路与代码
Repeater控件,放在ItemTemplate内的铵钮OnClick之后,获取Repeater的Item,ItemIndex,CommandArgument,CommandName以及绑定的字段值。 
准备数据: 

复制代码代码如下:


View Code 
Imports Microsoft.VisualBasic 
Namespace Insus.NET 
Public Class Catalog 
Private _ID As Integer 
Private _Name As String 
Public Property ID As Integer 
Get 
Return _ID 
End Get 
Set(value As Integer) 
_ID = value 
End Set 
End Property 
Public Property Name As String 
Get 
Return _Name 
End Get 
Set(value As String) 
_Name = value 
End Set 
End Property 
End Class 
End Namespace 

 

复制代码代码如下:


View Code 
Private Function GetData() As List(Of Catalog) 
Dim cls As New List(Of Catalog) 
Dim cl As Catalog = New Catalog() 
cl.ID = 1 
cl.Name = "汽车" 
cls.Add(cl) 
cl = New Catalog() 
cl.ID = 2 
cl.Name = "时尚" 
cls.Add(cl) 
cl = New Catalog() 
cl.ID = 3 
cl.Name = "科技" 
cls.Add(cl) 
cl = New Catalog() 
cl.ID = 5 
cl.Name = "文化" 
cls.Add(cl) 
cl = New Catalog() 
cl.ID = 6 
cl.Name = "公益" 
cls.Add(cl) 
Return cls 
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来显示事件结果: 

复制代码代码如下:


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