Here’s the code from the ascx that has the repeater:
<asp:Repeater ID='ListOfEmails' runat='server' > <HeaderTemplate><h3>A sub-header:</h3></HeaderTemplate> <ItemTemplate> [Some other stuff is here] <asp:Button ID='removeEmail' runat='server' Text='X' ToolTip='remove' /> </ItemTemplate> </asp:Repeater>
And in the codebehind for the repeater’s databound and events:
Protected Sub ListOfEmails_ItemDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.RepeaterItemEventArgs) Handles ListOfEmails.ItemDataBound If (e.Item.ItemType = ListItemType.Item) Or (e.Item.ItemType = ListItemType.AlternatingItem) Then Dim removeEmail As Button = CType(e.Item.FindControl('removeEmail'), Button) removeEmail.CommandArgument = e.Item.ItemIndex.ToString() AddHandler removeEmail.Click, AddressOf removeEmail_Click AddHandler removeEmail.Command, AddressOf removeEmail_Command End If End Sub Sub removeEmail_Click(ByVal sender As Object, ByVal e As System.EventArgs) Response.Write('<h1>click</h1>') End Sub Sub removeEmail_Command(ByVal sender As Object, ByVal e As CommandEventArgs) Response.Write('<h1>command</h1>') End Sub
Neither the click or command is getting called, what am I doing wrong?
Controls nested inside of Repeaters do not intercept events. Instead you need to bind to the
Repeater.ItemCommandEvent.ItemCommandcontainsRepeaterCommandEventArgswhich has two important fields:So, a trivial example: