ASP.Net: why is my button's click/command events not binding/firing in a repeater? ASP.Net: why is my button's click/command events not binding/firing in a repeater? asp.net asp.net

ASP.Net: why is my button's click/command events not binding/firing in a repeater?


Controls nested inside of Repeaters do not intercept events. Instead you need to bind to the Repeater.ItemCommand Event.

ItemCommand contains RepeaterCommandEventArgs which has two important fields:

  • CommandName
  • CommandArgument

So, a trivial example:

void rptr_ItemDataBound(object sender, RepeaterItemEventArgs e){    if (e.Item.ItemType == ListItemType.AlternatingItem || e.Item.ItemType == ListItemType.Item)    {        // Stuff to databind        Button myButton = (Button)e.Item.FindControl("myButton");        myButton.CommandName = "Add";        myButton.CommandArgument = "Some Identifying Argument";    }}void rptr_ItemCommand(object source, RepeaterCommandEventArgs e){    if (e.CommandName == "Add")    {        // Do your event    }}


You need to handle the ItemCommand event on your Repeater. Here's an example.

Then, your button clicks will be handled by the ListOfEmails_ItemCommand method. I don't think wiring up the Click or Command event (of the button) in ItemDataBound will work.


If you're planning to use ItemCommand event, make sure you register to ItemCommand event in Page_Init not in Page_Load.

protected void Page_Init(object sender, EventArgs e){    // rptr is your repeater's name    rptr.ItemCommand += new RepeaterCommandEventHandler(rptr_ItemCommand);}

I am not sure why it wasn't working for me with this event registered in Page_Load but moving it to Page_Init helped.