In this article I will explain how to get the Repeater Item, Repeater Item Index, CommandName and CommandArgument when a Button, ImageButton or LinkButton is clicked.
 
ASP.Net Repeater
<asp:Repeater ID="Repeater1" runat="server">
<ItemTemplate>
    <asp:Label ID="Label2" runat="server" Text='<%# Eval("ContactName") %>'></asp:Label>
    <asp:Button ID="Button1" runat="server" Text="Button" OnClick = "Button_Click" CommandArgument = '<%# Eval("ContactID") %>' />
</ItemTemplate>
</asp:Repeater>

Above you might have noticed that the ASP.Net Repeater control has a Button which when clicked raises a button click event.
 
Get Repeater Item and Repeater Item Index when Button is clicked
Below code explains how to get the ASP.Net Repeater Item, ItemIndex, Button reference and its CommandArgument.
C#
protected void Button_Click(object sender, EventArgs e)
{
    //Get the reference of the clicked button.
    Button button = (sender as Button);
 
    //Get the command argument
    string commandArgument = button.CommandArgument;
 
    //Get the Repeater Item reference
    RepeaterItem item = button.NamingContainer as RepeaterItem;
 
    //Get the repeater item index
    int index = item.ItemIndex;
}
 
VB.Net
Protected Sub Button_Click(ByVal sender As Object, ByVal e As EventArgs)
   'Get the reference of the clicked button.
   Dim button As Button = CType(sender, Button)
  
   'Get the command argument
   Dim commandArgument As String = button.CommandArgument
  
   'Get the Repeater Item reference
   Dim item As RepeaterItem = CType(button.NamingContainer, RepeaterItem)
  
   'Get the repeater item index
   Dim index As Integer = item.ItemIndex
End Sub
 
Same way you can do it for LinkButton and ImageButton. Just by typecasting sender  
LinkButton
C#
(sender as LinkButton);
VB.Net
CType(sender, LinkButton)
 
ImageButton
C#
(sender as ImageButton);
VB.Net
CType(sender, ImageButton)