找回密码
 立即注册

QQ登录

只需一步,快速开始

iceman

社区贡献组

270

主题

1万

帖子

1万

积分

社区贡献组

积分
19311

活字格认证微信认证勋章元老葡萄

iceman
社区贡献组   /  发表于:2014-8-11 13:56  /   查看:4680  /  回复:3
请问 C1GridView 怎样在页面刷新后保持之前的ScrollBar位置?谢谢

3 个回复

倒序浏览
Alice
社区贡献组   /  发表于:2014-8-11 15:40:00
沙发
回复 1楼iceman的帖子

附件里的Sample是用JavaScript实现c1GridView的滚动条同步的例子,和你的需求类似。


Sample通过JavaScript实现了C1GridView的滚动条进行定位,如用水平滚动条的位置,同步另外一个C1GridView的垂直滚动条位置。
下面是获得表格1的滚动位置的函数,会用这个位置滚动在第二个表格相同的行:
  1.   // Gets the index of the first column
  2.         function getFirstVisibleColumnInViewArea(id) {
  3.             var $grid = $(id),
  4.            $outer = $grid.closest(".wijmo-wijgrid"),
  5.            outerLeft = $outer.offset().left,
  6.            columns = $grid.c1gridview("columns");

  7.             for (var i = 0; i < columns.length; i++) {
  8.                 var element = columns[i].element;

  9.                 if ((element.offset().left - outerLeft + element.width()) > 0) {
  10.                     return i;
  11.                 }
  12.             }
  13.         }
复制代码

下面代码用来实现滚动的同步:
  1.         //Scrolls to the specific row in second grid
  2.         function scroll(li) {
  3.             var position = $($("#C1GridView2").c1gridview()[0].rows[li]).position().top;
  4.             $("#C1GridView2").closest(".wijmo-wijsuperpanel").wijsuperpanel("vScrollTo", position);
  5.         }
复制代码


如果有问题请联系我。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
请点击评分,对我的服务做出评价!  5分为非常满意!

葡萄城控件服务团队

官方网站: http://www.gcpowertools.com.cn
回复 使用道具 举报
Alice
社区贡献组   /  发表于:2014-8-12 10:01:00
板凳
回复 1楼iceman的帖子

根据需求改进Sample,现在实现的基本思路是:在单元格进入编辑状态前记住水平和竖直ScrollBar的位置。当客户端重画的时候,将水平和竖直方向的Scrollbars设置到这个位置。这个值保存在了document.cookie里面,防止刷新页面的时候值被清掉。
Sample:


C1GridView分别调用了OnClientBeforeCellEdit和OnClientLoaded,JavaScript部分的代码如下所示,ClientBeforeCellEdit实现在单元格编辑前记住位置,ClientRedered实现客户端重画设置位置:
  1. <script type="text/javascript">

  2.         var loaded = false;

  3.         function ClientRendered(e, args) {
  4.             var cookie = document.cookie;
  5.             if (cookie != undefined) {
  6.                 var scrollToRow = document.cookie.substring(document.cookie.IndexOf('v') + 2,document.cookie.indexOf(','));
  7.                 var scrollToLeft = document.cookie.substring(document.cookie.IndexOf('h') + 2);
  8.                 if (scrollToRow != "") {
  9.                     var superPanel = $(".wijmo-wijgrid").find(".wijmo-wijsuperpanel");
  10.                     $(superPanel).wijsuperpanel("option", "vScroller").scrollValue = scrollToRow;
  11.                     $(superPanel).wijsuperpanel("option", "hScroller").scrollValue = scrollToLeft;
  12.                     $(superPanel).wijsuperpanel("paintPanel");
  13.                 }
  14.             }
  15.         }

  16.         function ClientLoaded(e, args) {
  17.             loaded = true;
  18.         }

  19.         function ClientBeforeCellEdit(e, args) {
  20.             if (loaded) {
  21.                 var vScrollPosition = $(".wijmo-wijgrid").find(".wijmo-wijsuperpanel").wijsuperpanel("option", "vScroller").scrollValue;
  22.                 var hScrollPosition = $(".wijmo-wijgrid").find(".wijmo-wijsuperpanel").wijsuperpanel("option", "hScroller").scrollValue;
  23.                 var date = new Date();
  24.                 date.setTime(date.getTime() + 30000);
  25.                 document.cookie = 'v=' + vScrollPosition + ',h='+ hScrollPosition+ '; expires=' + date + '; path=/'
  26.             }

  27.         }
  28.     </script>
复制代码


效果如下图:
1.拖动水平和竖直的Scrollbars。
2.进入一个单元格进行编辑。
3.按F5刷新。
结果:刷新后水平和竖直Scrollbar依然停留在刚才编辑单元格的位置。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
请点击评分,对我的服务做出评价!  5分为非常满意!

葡萄城控件服务团队

官方网站: http://www.gcpowertools.com.cn
回复 使用道具 举报
Alice
社区贡献组   /  发表于:2014-8-15 15:24:00
地板
回复 1楼iceman的帖子



我替换了dll,使用hotfix:3.5.20142.178能够正常运行,Sample如上,使用和你机器一样的Hotfix。
由于没有重现你提到的问题,所以需要你运行这个sample,看是否依然有问题,以便帮助你解决问题。
请点击评分,对我的服务做出评价!  5分为非常满意!

葡萄城控件服务团队

官方网站: http://www.gcpowertools.com.cn
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部