Index a repeater – pretty simple

by Andrei Hetel 6. February 2008 12:45

Piece of code presented here simply add a column, not related with content of the repeater, which index current line of data.
Repeater definition:

 

<asp:Repeater id="RB" runat="server">
  <HeaderTemplate>
    <tr>
      <td align="right">#</td>
      <td>User</td>
      <td align="right">Points</td>
    </tr>
  </HeaderTemplate>
  <ItemTemplate>
    <tr>
      <td align="right"><asp:Label ID="t5" runat="server"></asp:Label></td>
      <td><%#DataBinder.Eval(Container.DataItem, "UserName")%></td>
      <td align="right"><%#DataBinder.Eval(Container.DataItem, "TotalPoints")%></td>
    </tr>
  </ItemTemplate>
</asp:Repeater>

 

In code behind, first declare a variable:

 

Private CounterOverallTop As Integer = 1

 

Don’t forget to bind your data to the repeater, something like:

RB.DataSource = … your data source RB.DataBind()

 

Following code will populate index column.

 

Protected Sub RB_ItemDataBound(ByVal sender As Object, _
                                                   ByVal e As System.Web.UI.WebControls.RepeaterItemEventArgs) _
                                                   Handles RB.ItemDataBound

  If (e.Item.ItemType = ListItemType.Item) Or _
    (e.Item.ItemType = ListItemType.AlternatingItem) Then

      DirectCast(e.Item.FindControl("t5"), Label).Text = CounterOverallTop
      CounterOverallTop += 1

  End If

End Sub

 

blog comments powered by Disqus