c# - How can pass values between events? -
i've dropdownlist
, button inside datalist. choose number of items dropdownlist , pass button event send database.
but i'm unable so. problem variable selectedvalue
gets assigned inside dditem_change
, although i've declared globally.
how can access value in datalist1_itemcommand(object source, datalistcommandeventargs e)
.
here code dropdown list change
public void dditem_change(object sender, eventargs e) { var ddllist = (dropdownlist)sender; selectedvalue = ((dropdownlist)ddllist.namingcontainer.findcontrol("drplist")).selectedvalue; }
this code public void datalist1_itemcommand
public void datalist1_itemcommand(object source, datalistcommandeventargs e) { if(e.commandname == "add") { if (session["user"] == null) { response.write("<script>alert('login first!!!');</script>"); } else { string[] ar = e.commandargument.tostring().split(','); sqlconnection con = new sqlconnection(); con.connectionstring = "data source=dtpxp-77a;initial catalog=practice;integrated security=true"; con.open(); sqlcommand cmd = new sqlcommand("insert cart values(@username,@prodname,@price,@stock)", con); cmd.parameters.add("@username", sqldbtype.varchar); cmd.parameters.add("@prodname", sqldbtype.varchar); cmd.parameters.add("@price", sqldbtype.int); cmd.parameters.add("@stock", sqldbtype.int); cmd.parameters["@username"].value = session["user"].tostring(); cmd.parameters["@prodname"].value = ar[0].tostring(); cmd.parameters["@price"].value = int.parse(ar[1]); cmd.parameters["@stock"].value = //selectedvalue not accessible// cmd.executenonquery(); response.write("<script>alert('successfully added');</script>"); } } }
this result of asp.net page lifecycle. when select drop down menu causes postback in store selectedvalue
variable. when trigger button causes another postback results in selectedvalue
being lost page re-created.
in order persist value between postbacks need store somewhere. example, use session
storage e.g.
protected void page_load(object sender, eventargs e) { if (!page.ispostback) { selectedvalue = (string)session["selectedvalue"]; } } public void dditem_change(object sender, eventargs e) { var ddllist = (dropdownlist)sender; session["selectedvalue"] = ((dropdownlist)ddllist.namingcontainer.findcontrol("drplist")).selectedvalue; } public void datalist1_itemcommand(object source, datalistcommandeventargs e) { // selectedvalue should accessible }
considering how small data is, , given in-fact view specific, might better placed in viewstate.
Comments
Post a Comment