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

首先看看效果

获取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