c# - Getting control value when switching a view as part of a multiview -
i have following code in aspx page:
<asp:button id="display_button" runat="server" text="display" onclick="button1_click" /> <asp:button id="edit_button" runat="server" text="edit" onclick="button2_click" /> <asp:button id="save_button" runat="server" text="save" onclick="button3_click" visible="false" /> <asp:multiview id="multiview1" runat="server" activeviewindex="0"> <asp:view id="view1" runat="server"> <asp:formview id="view_program" runat="server"> <itemtemplate> <%# eval("status").tostring().trim() %> </itemtemplate> </asp:formview> </asp:view> <asp:view id="view2" runat="server"> <asp:formview id="edit_program" runat="server"> <itemtemplate> <asp:dropdownlist id="p_status" runat="server"> </asp:dropdownlist> </itemtemplate> </asp:formview> </asp:view> </asp:multiview>
and following functions attached buttons in code-behind page:
protected void button1_click(object sender, eventargs e) { multiview1.setactiveview(view1); save_button.visible = false; } protected void button2_click(object sender, eventargs e) { multiview1.setactiveview(view2); save_button.visible = true; } protected void button3_click(object sender, eventargs e) { dropdownlist p_status = edit_program.findcontrol("p_status") dropdownlist; var status = p_status.selectedvalue; label1.text = status; //save_button.visible = false; //multiview1.setactiveview(view1); }
the idea being, there 2 views, first displays information, if user wants edit information, click button 2 changes view edit mode, has controls (drop downs, text fields, etc). makes 'save' button appear.
what trying make happen is, when save button clicked, grab of values various fields, update object , update database. flip view1 updated info.
problem is, can see in void button3_click
, try grab values control, p_status, gets original value. example, menu has 3 values, 'green', 'yellow', , 'red'. green default value , selected when view2 displayed. however, if select yellow or red, , click save, rather label being updated display 1 of 2 values, displays green.
any ideas?
edit: page load function per request below
protected void page_load(object sender, eventargs e) { try { person myperson = new person(userid); testprogram myprogram = new testprogram(id); list<testprogram> program = new list<testprogram> { myprogram }; view_program.datasource = program; view_program.databind(); edit_program.datasource = program; edit_program.databind(); dropdownlist p_status = edit_program.findcontrol("p_status") dropdownlist; p_status.items.add(new listitem("green", "green")); p_status.items.add(new listitem("yellow", "yellow")); p_status.items.add(new listitem("red", "red")); //myprogram.status = "red"; p_status.selectedvalue = myprogram.status; } catch (exception ex) { response.write(ex); label1.text = ex.tostring(); } }
whoops...missed little someting.. bad
when asp.net not behaving expected best friend: msdn: asp.net page lifecyle
upon further review...
there couple of problems here. drop down list control id of "p_status" contained inside multiview (i forgot meant...) need move code populate p_status pre-render after checking see if multiveiw1.activeview = view2. since post need bind values late in page cycle
Comments
Post a Comment