asp.net - programmatically added click event in user control won't fire -
i'm having issues getting click event button contained within programmatically added user control fire. understand event must wired each time new user control added, , i'm pretty sure i'm doing that, still nothing. click event button works fine first user control, not added programmatically. here's markup user control....
<asp:panel id="pnladdressform" runat="server"> <asp:label id="lblstreet" runat="server" text="street address"></asp:label> <asp:textbox id="txtstreet" runat="server"></asp:textbox> <br /><br /> <asp:label id="lblcity" runat="server" text="city"></asp:label> <asp:textbox id="txtcity" runat="server"></asp:textbox> <br /><br /> <asp:label id="lblstate" runat="server" text="state"></asp:label> <asp:textbox id="txtstate" runat="server"></asp:textbox> <br /><br /> <asp:label id="lblzip" runat="server" text="zip"></asp:label> <asp:textbox id="txtzip" runat="server"></asp:textbox> <br /><br /> <asp:button id="btnremoveaddress" runat="server" text="remove address" onclick="btnremoveaddress_click" /> </asp:panel> ...and here's markup main page...
<form id="form1" runat="server"> <div> <my:formusercontrol runat="server" id="myformusercontrol" /> <br /><br /> <hr /> <my:addressusercontrol runat="server" id="myaddressusercontrol" /> <br /><br /> <asp:placeholder id="phaddresses" runat="server"></asp:placeholder> <br /><br /> <asp:button id="btnaddaddress" runat="server" text="add address" onclick="btnaddaddress_click" /> </div> <br /><br /> <hr /> <asp:button id="btnsubmit" runat="server" text="create pdf" onclick="btnsubmit_click" /> </form> ..as can see contains 1 addressusercontrol declaratively. subsequent addressusercontrols added phaddresses once btnaddaddress clicked. addressusercontrols added way in code behind...
private static list<addressusercontrol> addresses = new list<addressusercontrol>(); protected void page_preinit(object sender, eventargs e) { int addresscount = 0; foreach (addressusercontrol acntrl in addresses) { literal ltlspace = new literal(); ltlspace.text = "<br /><br />"; phaddresses.controls.add(acntrl); phaddresses.controls.add(ltlspace); addresscount++; } } when btnaddaddress click event handler runs... protected void btnaddaddress_click(object sender, eventargs e) { addressusercontrol acntrl = loadcontrol("~/usercontrols/addressusercontrol.ascx") addressusercontrol; findaddresscontrolremovebutton(acntrl); addressusercontrolbutton.id = "btnremoveaddress" + addresses.count + 1; addressusercontrolbutton.click += new eventhandler(addressusercontrolbutton_click); addresses.add(acntrl); } ...and here's addressusercontrolbutton event handler. never runs, suppose i'm not adding correctly in above handler?
private void addressusercontrolbutton_click(object sender, eventargs e) { button thisbutton = sender button; thisbutton.text = "why hello"; } edit - ok, moved eventhandler assignment page_preinit instead of within btnaddaddress_click, so....
protected void page_preinit(object sender, eventargs e) { int addresscount = 0; foreach (addressusercontrol acntrl in addresses) { literal ltlspace = new literal(); ltlspace.text = "<br /><br />"; phaddresses.controls.add(acntrl); findaddresscontrolremovebutton(acntrl); addressusercontrolbutton.id = "btnremoveaddress" + addresscount; addressusercontrolbutton.click += new eventhandler(addressusercontrolbutton_click); phaddresses.controls.add(ltlspace); addresscount++; } } not totally clear on why or how fixed problem though.
when add control programmatically, need register click event after that.
Comments
Post a Comment