I have an issue similar to the one posted here: Event fires more and more times
However the solution did not work for me. I have a child control that fires an event on button click and a listener on the parent page. When click event occurs and the event is invoked, it fires multiple times on the parent page. Each time incrementing by one.
The page load (on parent) and button click (on child) events only fire once, it is only the event method that runs multiple times.
User Control
public delegate void QuickViewClickEventHandler(int jobId, int bayId);
public static event QuickViewClickEventHandler QuickViewClicked;
protected void QuickViewLinkButton_OnClick(object sender, EventArgs e)
{
// code removed for clarity
OnQuickViewClicked(jobId, bayId);
}
protected void OnQuickViewClicked(int jobId, int bayId)
{
var handler = QuickViewClicked;
if (handler != null)
{
handler(jobId, bayId);
}
}
Parent page
<asp:Repeater runat="server" ID="BayRepeater" OnItemDataBound="BayRepeaterStuff_ItemDataBound">
<ItemTemplate>
<uc:BayViewItem ID="BayViewItemControl" runat="server" />
</ItemTemplate>
</asp:Repeater>
protected void Page_Load(object sender, EventArgs e)
{
BayViewItem.QuickViewClicked += BayViewItem_QuickViewClicked;
}
private void BayViewItem_QuickViewClicked(int jobId, int bayId)
{
// code removed for clarity
// unregistering the event seems to work but only after the first time
// initial page load will still cause it to fire multiple times
BayViewItem.QuickViewClicked -= BayViewItem_QuickViewClicked;
}