c# - Dropdownlist does not update after adding update panel -
i have multiple dropdownlist box querying same column, same table , same database. example under memberid column have following ids.
- 12345
- 23456
- 34567
and have 3 different dropdownlist box shown below
<asp:dropdownlist id="memberid3" runat="server" visible="false" onselectedindexchanged="ddlpid3_selectedindexchanged" > </asp:dropdownlist> <asp:dropdownlist id="memberid1" runat="server" visible="false" onselectedindexchanged="ddlpid1_selectedindexchanged"> </asp:dropdownlist> <asp:dropdownlist id="memberid2" runat="server" visible="false" onselectedindexchanged="ddlpid2_selectedindexchanged"> </asp:dropdownlist>
i added update panel between dropdownlist allow dropdownlist refresh upon updates/selections.
<asp:updatepanel id="updatepanel1" runat="server"> <contenttemplate> </contenttemplate> </asp:updatepanel>
for instance, when memberid1 selected 12345, other 2 dropdownlist (memberid2 , 3) not display id 12345. vice versa, when memberid1 select default value of dropdownlist, id reappears in other 2 dropdownlistbox. have added default value of ddl.
memeberid(number).items.insert(0, new listitem(" please select member id", "")); memeberid(number).selectedindex = 0;
if have not mistaken property of update panel, isn't able make function work?
here binding code requested.
protected void ddllocation_selectedindexchanged(object sender, eventargs e) { using (var connadd = new sqlconnection("data source = localhost; initial catalog = majorproject; integrated security= sspi")) { connadd.open(); var sql = "select policeid policeaccount status ='available' , handle ='offcase' , postedto='" + ddllocation.selectedvalue + "'"; using (var cmdadd = new sqldataadapter(sql, connadd)) { dataset ds2 = new dataset(); cmdadd.fill(ds2); memberid1.items.clear(); memberid1.datasource = ds2; memberid1.datatextfield = "memberid"; memberid1.datavaluefield = "memberid"; memberid1.databind(); memberid1.items.insert(0, new listitem("please select member id", "")); memberid1.selectedindex = 0; memberid2.items.clear(); memberid2.datasource = ds2; memberid2.datatextfield = "memberid"; memberid2.datavaluefield = "memberid"; memberid2.databind(); memberid2.items.insert(0, new listitem("please select member id", "")); memberid2.selectedindex = 0; memberid3.items.clear(); memberid3.datasource = ds2; memberid3.datatextfield = "memberid"; memberid3.datavaluefield = "memberid"; memberid3.databind(); memberid3.items.insert(0, new listitem("please select member id", "")); memberid3.selectedindex = 0; }
update
for i'm able allow other ddl re-bind , cache selected value in other dropdownlist when default value selected. however, when select other id, id being removed , wont re-bind other ddl.
protected void fillddllocations() { filldropdown(ddlpid1); filldropdown(ddlpid2); filldropdown(ddlpid3); filldropdown(ddlpid4); filldropdown(ddlpid5); ddlpid1.visible = false; ddlpid2.visible = false; ddlpid3.visible = false; ddlpid4.visible = false; ddlpid5.visible = false; } protected void filldropdown(dropdownlist ddl) { using (var connadd = new sqlconnection("data source = localhost; initial catalog = majorproject; integrated security= sspi")) { connadd.open(); var sql = "select policeid policeaccount status ='available' , handle ='offcase' , postedto='" + ddllocation.selectedvalue + "'"; using (var cmdadd = new sqldataadapter(sql, connadd)) { dataset ds2 = new dataset(); cmdadd.fill(ds2); ddl.items.clear(); ddl.datasource = ds2; ddl.databind(); ddl.items.insert(0, new listitem("police id", "")); ddl.selectedindex = 0; } } } protected void ddlpid1_selectedindexchanged(object sender, eventargs e) { if (ddlpid1.selectedindex > 0) { session["pid1"] = ddlpid1.selectedvalue; listitem removeitem2 = ddlpid2.items.findbyvalue(ddlpid1.selectedvalue); ddlpid2.items.remove(removeitem2); listitem removeitem3 = ddlpid3.items.findbyvalue(ddlpid1.selectedvalue); ddlpid3.items.remove(removeitem3); listitem removeitem4 = ddlpid4.items.findbyvalue(ddlpid1.selectedvalue); ddlpid4.items.remove(removeitem4); listitem removeitem5 = ddlpid5.items.findbyvalue(ddlpid1.selectedvalue); ddlpid5.items.remove(removeitem5); } else if (ddlpid1.selecteditem.text.equals("police id")) { filldropdown(ddlpid1); filldropdown(ddlpid2); filldropdown(ddlpid3); filldropdown(ddlpid4); filldropdown(ddlpid5); ddlpid2.selectedvalue = (string)session["pid2"]; ddlpid2_selectedindexchanged(this, eventargs.empty); ddlpid3.selectedvalue = (string)session["pid3"]; ddlpid3_selectedindexchanged(this, eventargs.empty); ddlpid4.selectedvalue = (string)session["pid4"]; ddlpid4_selectedindexchanged(this, eventargs.empty); ddlpid5.selectedvalue = (string)session["pid5"]; ddlpid5_selectedindexchanged(this, eventargs.empty); } } protected void ddlpid2_selectedindexchanged(object sender, eventargs e) { if (ddlpid2.selectedindex > 0) { session["pid2"] = ddlpid2.selectedvalue; listitem removeitem1 = ddlpid1.items.findbyvalue(ddlpid2.selectedvalue); ddlpid1.items.remove(removeitem1); listitem removeitem3 = ddlpid3.items.findbyvalue(ddlpid2.selectedvalue); ddlpid3.items.remove(removeitem3); listitem removeitem4 = ddlpid4.items.findbyvalue(ddlpid2.selectedvalue); ddlpid4.items.remove(removeitem4); listitem removeitem5 = ddlpid5.items.findbyvalue(ddlpid2.selectedvalue); ddlpid5.items.remove(removeitem5); } else if (ddlpid2.selecteditem.text.equals("police id")) { filldropdown(ddlpid1); filldropdown(ddlpid2); filldropdown(ddlpid3); filldropdown(ddlpid4); filldropdown(ddlpid5); ddlpid1.selectedvalue = (string)session["pid1"]; ddlpid1_selectedindexchanged(this, eventargs.empty); ddlpid3.selectedvalue = (string)session["pid3"]; ddlpid3_selectedindexchanged(this, eventargs.empty); ddlpid4.selectedvalue = (string)session["pid4"]; ddlpid4_selectedindexchanged(this, eventargs.empty); ddlpid5.selectedvalue = (string)session["pid5"]; ddlpid5_selectedindexchanged(this, eventargs.empty); } } protected void ddlpid3_selectedindexchanged(object sender, eventargs e) { if (ddlpid3.selectedindex > 0) { session["pid3"] = ddlpid3.selectedvalue; listitem removeitem1 = ddlpid1.items.findbyvalue(ddlpid3.selectedvalue); ddlpid1.items.remove(removeitem1); listitem removeitem2 = ddlpid2.items.findbyvalue(ddlpid3.selectedvalue); ddlpid2.items.remove(removeitem2); listitem removeitem4 = ddlpid4.items.findbyvalue(ddlpid3.selectedvalue); ddlpid4.items.remove(removeitem4); listitem removeitem5 = ddlpid5.items.findbyvalue(ddlpid3.selectedvalue); ddlpid5.items.remove(removeitem5); } else if (ddlpid3.selecteditem.text.equals("police id")) { filldropdown(ddlpid1); filldropdown(ddlpid2); filldropdown(ddlpid3); filldropdown(ddlpid4); filldropdown(ddlpid5); ddlpid1.selectedvalue = (string)session["pid1"]; ddlpid1_selectedindexchanged(this, eventargs.empty); ddlpid2.selectedvalue = (string)session["pid2"]; ddlpid2_selectedindexchanged(this, eventargs.empty); ddlpid4.selectedvalue = (string)session["pid4"]; ddlpid4_selectedindexchanged(this, eventargs.empty); ddlpid5.selectedvalue = (string)session["pid5"]; ddlpid5_selectedindexchanged(this, eventargs.empty); } } protected void ddlpid4_selectedindexchanged(object sender, eventargs e) { if (ddlpid4.selectedindex > 0) { session["pid4"] = ddlpid4.selectedvalue; listitem removeitem1 = ddlpid1.items.findbyvalue(ddlpid4.selectedvalue); ddlpid1.items.remove(removeitem1); listitem removeitem2 = ddlpid2.items.findbyvalue(ddlpid4.selectedvalue); ddlpid2.items.remove(removeitem2); listitem removeitem3 = ddlpid3.items.findbyvalue(ddlpid4.selectedvalue); ddlpid3.items.remove(removeitem3); listitem removeitem5 = ddlpid5.items.findbyvalue(ddlpid4.selectedvalue); ddlpid5.items.remove(removeitem5); } else if (ddlpid4.selecteditem.text.equals("police id")) { filldropdown(ddlpid1); filldropdown(ddlpid2); filldropdown(ddlpid3); filldropdown(ddlpid4); filldropdown(ddlpid5); ddlpid1.selectedvalue = (string)session["pid1"]; ddlpid1_selectedindexchanged(this, eventargs.empty); ddlpid2.selectedvalue = (string)session["pid2"]; ddlpid2_selectedindexchanged(this, eventargs.empty); ddlpid3.selectedvalue = (string)session["pid3"]; ddlpid3_selectedindexchanged(this, eventargs.empty); ddlpid5.selectedvalue = (string)session["pid5"]; ddlpid5_selectedindexchanged(this, eventargs.empty); } } protected void ddlpid5_selectedindexchanged(object sender, eventargs e) { if (ddlpid5.selectedindex > 0) { session["pid5"] = ddlpid5.selectedvalue; listitem removeitem1 = ddlpid1.items.findbyvalue(ddlpid5.selectedvalue); ddlpid1.items.remove(removeitem1); listitem removeitem2 = ddlpid2.items.findbyvalue(ddlpid5.selectedvalue); ddlpid2.items.remove(removeitem2); listitem removeitem3 = ddlpid3.items.findbyvalue(ddlpid5.selectedvalue); ddlpid3.items.remove(removeitem3); listitem removeitem4 = ddlpid4.items.findbyvalue(ddlpid5.selectedvalue); ddlpid4.items.remove(removeitem4); } else if (ddlpid5.selecteditem.text.equals("police id")) { filldropdown(ddlpid1); filldropdown(ddlpid2); filldropdown(ddlpid3); filldropdown(ddlpid4); filldropdown(ddlpid5); ddlpid1.selectedvalue = (string)session["pid1"]; ddlpid1_selectedindexchanged(this, eventargs.empty); ddlpid2.selectedvalue = (string)session["pid2"]; ddlpid2_selectedindexchanged(this, eventargs.empty); ddlpid3.selectedvalue = (string)session["pid3"]; ddlpid3_selectedindexchanged(this, eventargs.empty); ddlpid4.selectedvalue = (string)session["pid4"]; ddlpid4_selectedindexchanged(this, eventargs.empty); } }
first of all, set autopostback property dropdowns true in markup:
<asp:dropdownlist id="memberid1" autopostback="true" runat="server" visible="false" onselectedindexchanged="ddlpid1_selectedindexchanged"> </asp:dropdownlist> <asp:dropdownlist id="memberid2" autopostback="true" runat="server" visible="false" onselectedindexchanged="ddlpid2_selectedindexchanged"> </asp:dropdownlist> <asp:dropdownlist id="memberid3" autopostback="true" runat="server" visible="false" onselectedindexchanged="ddlpid3_selectedindexchanged" > </asp:dropdownlist>
update: can store selected values in view state , retrieve after repopulating dropdownlists below:
public partial class webform2 : system.web.ui.page { bool bflag = true; protected void page_load(object sender, eventargs e) { if (!ispostback) { fillddllocations(); } } //properties store selected value in viewstate protected string memberid1selection { { if (viewstate["memberid1selection"] != null) return viewstate["memberid1selection"].tostring(); return ""; } set { viewstate["memberid1selection"] = value; } } protected string memberid2selection { { if (viewstate["memberid2selection"] != null) return viewstate["memberid2selection"].tostring(); return ""; } set { viewstate["memberid2selection"] = value; } } protected string memberid3selection { { if (viewstate["memberid3selection"] != null) return viewstate["memberid3selection"].tostring(); return ""; } set { viewstate["memberid3selection"] = value; } } protected void fillddllocations() { filldropdown(memberid1); filldropdown(memberid2); filldropdown(memberid3); memberid1.visible = true; memberid2.visible = true; memberid3.visible = true; } protected void filldropdown(dropdownlist ddl) { using (var connadd = new sqlconnection("data source = localhost; initial catalog = majorproject; integrated security= sspi")) { connadd.open(); var sql = "select policeid policeaccount status ='available' , handle ='offcase' , postedto='" + ddllocation.selectedvalue + "'"; using (var cmdadd = new sqldataadapter(sql, connadd)) { dataset ds2 = new dataset(); cmdadd.fill(ds2); ddl.items.clear(); ddl.datasource = ds2; ddl.datatextfield = "memberid"; ddl.datavaluefield = "memberid"; ddl.databind(); ddl.items.insert(0, new listitem("please select member id", "")); ddl.selectedindex = 0; } } } protected void indexchanged(dropdownlist ddlchanged, dropdownlist ddltofilter1, dropdownlist ddltofilter2) { string removevalue1 = ddlchanged == memberid1 ? memberid1selection : (ddlchanged == memberid2 ? memberid2selection : memberid3selection); string selvalue2 = ddlchanged == memberid1 ? memberid2selection : (ddlchanged == memberid2 ? memberid1selection : memberid1selection); string selvalue3 = ddlchanged == memberid1 ? memberid3selection : (ddlchanged == memberid2 ? memberid3selection : memberid2selection); bflag = false;//prevent fireing code again while changing index if (removevalue1 != "") { listitem item1 = ddltofilter1.items.findbyvalue(removevalue1); ddltofilter1.items.remove(item1); listitem item2 = ddltofilter2.items.findbyvalue(removevalue1); ddltofilter2.items.remove(item2); } if (selvalue3 != "") { listitem item3 = ddltofilter1.items.findbyvalue(selvalue3); ddltofilter1.items.remove(item3); } if (selvalue2 != "") { listitem item4 = ddltofilter2.items.findbyvalue(selvalue2); ddltofilter2.items.remove(item4); } bflag = false; ddltofilter1.selectedindex = ddltofilter1.items.indexof(ddltofilter1.items.findbyvalue(selvalue2)); ddltofilter2.selectedindex = ddltofilter2.items.indexof(ddltofilter2.items.findbyvalue(selvalue3)); } protected void ddlpid1_selectedindexchanged(object sender, eventargs e) { memberid1selection = memberid1.selectedvalue; if (bflag) { filldropdown(memberid2); filldropdown(memberid3); indexchanged(memberid1, memberid2, memberid3); } } protected void ddlpid2_selectedindexchanged(object sender, eventargs e) { memberid2selection = memberid2.selectedvalue; if (bflag) { filldropdown(memberid1); filldropdown(memberid3); indexchanged(memberid2, memberid1, memberid3); } } protected void ddlpid3_selectedindexchanged(object sender, eventargs e) { memberid3selection = memberid3.selectedvalue; if (bflag) { filldropdown(memberid1); filldropdown(memberid2); indexchanged(memberid3, memberid1, memberid2); } } }
i have tested code , working me. hope helps!
Comments
Post a Comment