telerik radGrid - persist client state on sort/paging/filter

若如初见. 提交于 2020-01-03 18:35:13

问题


Even in this ajax example which I really like the look of, when ever the top level grid is sorted the "state" of what you were doing "disappears"

For example,

Open the first person's row (Nancy Davolio) so you can see the Sales grid

Sort by Order Total in the Sales grid

Sort by Birth Date in the top level grid

Nancy Davoilo should now be second. Open her row.

The sales grid is no longer sorted by Order Total

This may seem trivial, or that i'm being picky; However:

If I have some text box(or some other type of method of accepting user input) on the sales grid, I would assume that this would get destroyed when sorting the top level grid. I would also think that even if I had this input on the top level grid, that sorting the top level grid (or filtering if there were filters) would destroy this input.

It seems that even paging destroys this.

The desired behavior would be for sorting and paging not just "appear" to be done client side because it's using an ajax request, but to ACTUALLY be done client side. Meaning that the actual rows of the grid are literally sorted(filtered, paged, etc.) client side so that any client side changes such as adding text to a text box, adding a css class to an object, [or in a more complex example adding a reference to a javascript object to an object via Jquery: $("#div1").data("object",someObject) would persist after sorting, paging and filtering.

Is there a way to make this happen?

Am I making what i'm looking to do clear? If not i'm happy to clarify.

Additional Notes: I would think the client side performance hit would be minimal to do something like this as long as there were not a very large number of rows. In fact there would be a lot less work on the server in recreating all of the records, repeated calls to the server/database and as in my example at the top the subPages would only need to be created once rather than twice.


回答1:


Take a look at the HierarchyLoadMode property of the MasterTableView. The demo you reference is using HierarchyLoadMode.ServerOnDemand which, according to Telerik's documentation, means that ViewState only maintains the state of the visible items. Therefore, when a details grid is collapsed you will lose its state (e.g. a sort order, page number, etc).

There are other modes. You can choose HierarchyLoadMode.ServerBind which maintains ViewState for all detail tables but requires a PostBack to expand a detail table. The HierarchyLoadMode.Client renders the MasterTableView and all DetailTables and items are expanded/collapsed on the client - no PostBack required. Either of those modes should also maintain the sort order and other state related to the detail tables.

I hope that helps answer your question.




回答2:


I recently got a reply from the Telerik support that their AJAX grid supports client binding out-of-the-box with sorting, paging and filtering with flat structure only (as in this demo).

For your case you may have two options:

  • extend the example with grid settings persister - http://demos.telerik.com/aspnet-ajax/grid/examples/programming/savinggridsettingsonperuserbasis/defaultcs.aspx
  • implement custom solution to simulate hierarchy with client binding as presented in this blog post.


来源:https://stackoverflow.com/questions/6044259/telerik-radgrid-persist-client-state-on-sort-paging-filter

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!