回复 1楼iceman的帖子
根据需求改进Sample,现在实现的基本思路是:在单元格进入编辑状态前记住水平和竖直ScrollBar的位置。当客户端重画的时候,将水平和竖直方向的Scrollbars设置到这个位置。这个值保存在了document.cookie里面,防止刷新页面的时候值被清掉。
Sample:
C1GridView分别调用了OnClientBeforeCellEdit和OnClientLoaded,JavaScript部分的代码如下所示,ClientBeforeCellEdit实现在单元格编辑前记住位置,ClientRedered实现客户端重画设置位置:
- <script type="text/javascript">
- var loaded = false;
- function ClientRendered(e, args) {
- var cookie = document.cookie;
- if (cookie != undefined) {
- var scrollToRow = document.cookie.substring(document.cookie.IndexOf('v') + 2,document.cookie.indexOf(','));
- var scrollToLeft = document.cookie.substring(document.cookie.IndexOf('h') + 2);
- if (scrollToRow != "") {
- var superPanel = $(".wijmo-wijgrid").find(".wijmo-wijsuperpanel");
- $(superPanel).wijsuperpanel("option", "vScroller").scrollValue = scrollToRow;
- $(superPanel).wijsuperpanel("option", "hScroller").scrollValue = scrollToLeft;
- $(superPanel).wijsuperpanel("paintPanel");
- }
- }
- }
- function ClientLoaded(e, args) {
- loaded = true;
- }
- function ClientBeforeCellEdit(e, args) {
- if (loaded) {
- var vScrollPosition = $(".wijmo-wijgrid").find(".wijmo-wijsuperpanel").wijsuperpanel("option", "vScroller").scrollValue;
- var hScrollPosition = $(".wijmo-wijgrid").find(".wijmo-wijsuperpanel").wijsuperpanel("option", "hScroller").scrollValue;
- var date = new Date();
- date.setTime(date.getTime() + 30000);
- document.cookie = 'v=' + vScrollPosition + ',h='+ hScrollPosition+ '; expires=' + date + '; path=/'
- }
- }
- </script>
复制代码
效果如下图:
1.拖动水平和竖直的Scrollbars。
2.进入一个单元格进行编辑。
3.按F5刷新。
结果:刷新后水平和竖直Scrollbar依然停留在刚才编辑单元格的位置。
|