c# - Timer, UpdatePanel and dynamically created buttons -


i have update panel div (with runat="server") dynamically create , add buttons on timer tick event.

the problem when button click, postback button gone , event not raised.

here's aspx page , c# code behind. nothing write in btn1_click occurs.

there's continue question in order keep simple, understand above first.

i need , appreciate it, ty.

<body>     <form id="form1" runat="server">     <asp:scriptmanager id="scriptmanager1" runat="server">     </asp:scriptmanager>     <asp:timer id="timer1" runat="server" interval="2000" ontick="timer1_tick">     </asp:timer>     <asp:updatepanel id="updatepanel1" updatemode="conditional" runat="server">         <triggers>             <asp:asyncpostbacktrigger controlid="timer1" eventname="tick" />         </triggers>         <contenttemplate>             <div id="div1" runat="server"></div>         </contenttemplate>     </asp:updatepanel>     <div id="div2" runat="server">div2</div>     </form> </body> 

and c# here.

 public partial class webform1 : system.web.ui.page         {             protected void page_load(object sender, eventargs e)             {             }              protected void timer1_tick(object sender, eventargs e)             {                 createcontrol();             }              void createcontrol()             {                 button btn1 = new button();                 btn1.id = "btn1";                 btn1.text = "click me";                 btn1.click += new eventhandler(btn1_click);                 div1.controls.add(btn1);             }              void btn1_click(object sender, eventargs e)             {                 div1.innerhtml += "btn1 clicked";             }            } 

for dynamically added controls must add them in every page load event. otherwise time gets click event gone. in case add button session collection of buttons every time create one, reload entire collection on every postback, doesn't lose you've added. also, save int in session increment dont have same id. ids should unique

something like:

 protected void page_load(object sender, eventargs e)         {           if(page.ispostback)            {              createcontrols(yourcollectioninsession)            }         }  protected void timer1_tick(object sender, eventargs e)         {             createcontrol();         }  void createcontrol()         {             button btn1 = new button();             btn1.id = "btn" + yoursessionid;             btn1.text = "click me";             btn1.click += new eventhandler(btn1_click);             div1.controls.add(btn1);             yoursessionid++;             yourcollectioninsession.add(btn1);         }  void createcontrol(list<button> buttons)         {             foreach(button btn in buttons)             {             div1.controls.add(btn);              }         } 

i've had same thing before , approach worked me. remember aspx page lifecycle. hit page_init , page_load before handles post events, meaning controls long gone.


Comments

Popular posts from this blog

toolbar - How to add link to user registration inside toobar in admin joomla 3 custom component -

linux - disk space limitation when creating war file -