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">
    <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") %>' />

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.
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;
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  
(sender as LinkButton);
CType(sender, LinkButton)
(sender as ImageButton);
CType(sender, ImageButton)