c# - Back to List Previous Next control in .NET issue -


i need because didn't find out solution project using mvvm. in 1 hand have default.aspx contains updatepanel 2 user controls. first control filtercontrol fields filter. second control gridview allows pagination , populates data database when press button search in filtercontrol. let's query returns 100 records. if set pagesize 20 results have 5 pages in gridview ok?

on other hand have details page formview recieves id parameter of item gridview , shows information it. above of asp:formview code have user control gets data filtered gridview in session variable throught corresponding viewmodel, , calculates items should next , previous have 1 "back list" link , "previous" , "next" links. previous , next links loads correctly. linkbuttons onclick event makes response.redirect(prevlink); example, prevlink link page redirects ~/details.aspx?id=5).

i controlling navigation asynchronously throughout eventhandler , historyeventargs when press button of browser fine , desired results in default.aspx page. whenever postback fired in default page, when changing page index of gridview, example, or executing new query in filter, call addhistorypoint of scriptmanager , save several keys , values (filter fields, number of page, etc).

the problem comes when press list linkbutton. wish data same before going detail page. have response.redirect("~/default.aspx") in onclick event of button.

do have ideas in how manage this?

thank much!!


copied code answer here

thank answers. @guvante don't want put "back list" on client side because when edit details page visible property of navigation control set false. think didn't express myself correctly. don't have response.redirect in onclick event of aspx page. have in source code of page onclick=lkbbacktolist_navigate.

i have in codebehind in way:

protected void lkbnext_navigate(object sender, eventargs e) {    response.redirect(navigationviewmodel.nexturl); }  protected void lkbprevious_navigate(object sender, eventargs e) {    response.redirect(navigationviewmodel.previousurl); }  protected void lkbbacktolist_navigate(object sender, eventargs e) {    response.redirect(navigationviewmodel.backtolisturl); } @msarchet of code in default.aspx code behind. when postback save state of filters, pageindex , on in session  public event eventhandler<historyeventargs> captureclientbrowsing;  protected void page_oninit(eventargs e)  {     this.captureclientbrowsing += new eventhandler<historyeventargs>(captureclientbrowsing_event);  }  protected override void savedatainsession()  {     saveinsession("filterviewmodel", this.filteringcontrol.viewmodel);     saveinsession("pageindex", this.currentpageindex); //currentpageindex property page index of gridview  }  protected void captureclientbrowsing_event(object sender, historyeventargs e)  {    loaddatafromsession(e.state); //e.state namevaluecollection values stored in session example filterviewmodel has user control filteringcontrol , "pageindex" has page index of gridview    controlsdatabinding();  } 

the saveinsession method keep session[key] = object key string follows:

string key = string.format("{0}.{1}.{2}", this.gettype(), namevalue, index);  

an example of key

"asp.customers_default_aspx.pageindex.1"` `session[key]=1 

if click in other page (for example page number 6) of grid view value of key variable be

"asp.customers_default_aspx.pageindex.2"` , `session[key]=5 

here stuck. if browse details page default page clicking in browser captureclientbrowsing_event fires , controls loaded correctly , values of filter.

what want when click linkbutton "back list" controls , filter loaded too. how namevaluecollection if don't have history args? if click 3 times next , click bak list how know session values load?

maybe there lot of questions , hard handle i've tried specific could.

you said it's working correctly when user goes listpage detailpage clicks browser btn. how captureclientbrowsing event fired? can post code shows that?

and couldn't reuse same mechanism when click list?

update: okay, there need send additional state information when response.redirect() listpage.

you use of common techniques: pass querystring parameter, set cookie, or set session variable.

detect signal in listpage init or load, linq query session keys maxhistoryindex, restore state session using keys derived maxhistoryindex.

e.g. if clicked detailpage after having paged through listpage 3 times, maxhistoryindex=3 , can restore session[string.format("asp.customers_default_aspx.pageindex.{0}", maxhistoryindex)]


Comments

Popular posts from this blog

c# - How to set Z index when using WPF DrawingContext? -

razor - Is this a bug in WebMatrix PageData? -

visual c++ - Using relative values in array sorting ( asm ) -