c# - Why does programmatically checking a checkbox cause its associated event to fire on the next postback? -


i've reduced problem simplest form possible since i'm working on complicated page. example has set of dynamically generated checkboxes. of these checkboxes may need checked when page first loads. also, event needs fire whenever box checked or unchecked. there drop down list needs autopostback when selected index changed. problem if programmatically check check box checkbox event fire when make selection on drop downlist. recreate bug/issue put break-point on checkbox event , on drop down list event. load page , make selection drop down list. checkbox event fire before drop down list event. if @ sender of checkbox event checkbox programmatically checked when page initialized. if drop down list changed want drop down event fire, still need programmatically check check box when page loaded first time.

 <asp:scriptmanager id="scriptmanager1" runat="server"></asp:scriptmanager>     <asp:updatepanel id="updatepanel1" runat="server" updatemode="conditional" >         <triggers>             <asp:asyncpostbacktrigger controlid="dropdownlist1" eventname="selectedindexchanged" />         </triggers>          <contenttemplate>             <asp:placeholder id="placeholder1" runat="server" />             <asp:dropdownlist id="dropdownlist1" runat="server" autopostback="true" onselectedindexchanged="dropdownlist1_selectedindexchanged" >                 <asp:listitem text="--select--" value="0" />                 <asp:listitem text="option 1" value="1" />                 <asp:listitem text="option 2" value="2" />             </asp:dropdownlist>         </contenttemplate>     </asp:updatepanel>  protected void page_init(object sender, eventargs e) {     if (this.ispostback)     {         createcheckboxes();     } }  protected void page_load(object sender, eventargs e) {     if (!this.ispostback)     {         initializecheckboxes();     } }  protected void checkbox_checkedchanged(object sender, eventargs e) {     checkbox cb = sender checkbox; }  protected void dropdownlist1_selectedindexchanged(object sender, eventargs e) {     //do }  private void initializecheckboxes() {     table tbl = new table();      tablerow tr = new tablerow();      (int x = 1; x <= 3; x++)     {         tablecell tc = new tablecell();         checkbox cb = new checkbox();         cb.id = "cb_" + x.tostring();         cb.text = "cb_" + x.tostring();         cb.autopostback = true;         cb.checkedchanged += new eventhandler(checkbox_checkedchanged);          if (x == 2)             cb.checked = true;          tc.controls.add(cb);         tr.cells.add(tc);     }      tbl.rows.add(tr);     placeholder1.controls.add(tbl); }  private void createcheckboxes() {     table tbl = new table();      tablerow tr = new tablerow();      (int x = 1; x <= 3; x++)     {         tablecell tc = new tablecell();         checkbox cb = new checkbox();         cb.id = "cb_" + x.tostring();         cb.text = "cb_" + x.tostring();         cb.autopostback = true;         cb.checkedchanged += new eventhandler(checkbox_checkedchanged);          tc.controls.add(cb);         tr.cells.add(tc);     }      tbl.rows.add(tr);     placeholder1.controls.add(tbl); } 

selected index changed because have wired so

onselectedindexchanged="dropdownlist1_selectedindexchanged"

again check box changed fires because heve unchecked has changed checked unchecked. if want stop handler doing check state , return if unchecked.

update

the problem if programmatically check check box checkbox event fire when make selection on drop downlist

i think expected behavior, it's similar happen if manually checked bunch of check boxes changed ddl autopostback set true, process events. can explain problem in abstract sense, trying achieve, why don't want check box events fire, have after created them , checked them therefore event fires?

you nasty hacking unwire checkbox events in page_load , wire them in loadcomplete. possibly use iscallback property, work in simple example because ddl in update panel.

i suggest not using server side events @ all. create web service , use jquery ajax post relevant data required carry out work.


Comments

Popular posts from this blog

php - SPIP: From Tag directly to an article -

jquery - isAjaxRequest always return false -

ruby on rails - In a controller spec, how to find a specific tag in the generated view? -