找回密码
 立即注册

QQ登录

只需一步,快速开始

3wldjnba123

注册会员

1

主题

4

帖子

33

积分

注册会员

积分
33
最新发帖
1、[img]file:///C:\Users\ldj\AppData\Roaming\Tencent\Users\47604291\QQ\WinTemp\RichOle\3J1P%LVLX3FR[)2Z{LE5_XM.png[/img]在火狐浏览器中,表格数据长[img=0,1]file:///C:\Users\ldj\AppData\Roaming\Tencent\Users\47604291\QQ\WinTemp\RichOle\3J1P%LVLX3FR[)2Z{LE5_XM.png[/img]快速滚动 空白的地方会更多,这在火狐浏览器上怎么会出现这样的bug,用户体验很不好呀!?
2,分页不能设置总数???
比如我要在后端获取10000笔数据,从后端分页出来了80笔,所以flexgrid显示的是1页,但是我想要的是1000笔的数据的页数, 10000/80可以用四舍五入来显示整数,所以我的问题是 怎么设置 总页数?
官方教程我没有找到设置的方法,都是flexgrid自动根据数据计算出来的
3,从分页问题来看,那你们这个控件的导出也只是导出显示的笔数呀,我们这边肯定要导出从后端想捞出的笔数,而不仅仅是“80笔”???



本帖子中包含更多资源

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

x

6 个回复

倒序浏览
dexteryao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2017-2-4 18:07:46
沙发
本帖最后由 dexteryao 于 2017-2-4 18:13 编辑

1. 我这里用Firefox测试没有重现问题,您用的是哪个demo还是自己做的页面,可否提供下demo
我用火狐50.1.0 测试的下面链接。
2和3 我理解您是想做服务端分页,每次点击后去服务端获取数据。
这种场景下,您需要自己去控制分页的信息了,CollectionView 是根据当前数据数量和pagesize自动计算pagecount的。
http://demo.gcpowertools.com.cn/ ... ntro/FlexGridIntro/
可以参考Dmoe中的分页部分,修改updatePager方法,在不同action情况下,去后台获取数据直接绑定itemsSource。您的接口可以返回查询的总数,当前页数,以及当前页的所有数据。

因为是服务端分页,前端一次只能拿到一页的数据,所以要导出全部数据就需要在后台实现了。
回复 使用道具 举报
3wldjnba123
注册会员   /  发表于:2017-2-5 13:33:49
板凳
本帖最后由 3wldjnba123 于 2017-2-5 13:36 编辑
  1.         $.get( "http://localhost:8083/v1/work/filte_pager?limit=80&offset=9999909", function ( data, status ) {
  2.             console.log( "data", data, "status", status )
  3.             // create CollectionView on the data (so grid and chart stay in sync)
  4.             var cv = new wijmo.collections.CollectionView( data ),
  5.                 pagerButtons = Array.prototype.slice.call( document.querySelectorAll( '#pPager button' ) );
  6.             // 设置page属性
  7.             cv.pageSize = 80;
  8.             var pageCount = 100, //自定义总页数
  9.                 pageIndex = 0; //自定义当前页数
  10.             updatePager(); //初始分页按钮
  11.             console.log( cv.pageIndex, cv.pageSize, cv.totalItemCount, cv.itemCount, cv.pageCount, 123 )
  12.             //点击更新页面按钮
  13.             pagerButtons.forEach( function ( el ) {
  14.                 el.addEventListener( 'click', function () {
  15.                     updatePager( this.getAttribute( 'data-action' ) );
  16.                     console.log( cv.pageIndex, cv.pageSize, cv.totalItemCount, cv.itemCount )
  17.                 } );
  18.             } );
  19.             // 更新显示文本和禁用/启用分页按钮
  20.             function updatePager( action ) {
  21.                 // 通过id获取按钮   
  22.                 var display = document.getElementById( 'pn' ),
  23.                     fb = document.getElementById( 'pfb' ),
  24.                     sb = document.getElementById( 'psb' ),
  25.                     sf = document.getElementById( 'psf' ),
  26.                     ff = document.getElementById( 'pff' ),
  27.                     enableBackwards = false,
  28.                     enableForwards = false;
  29.                 // 处理分页操作基于按钮的属性
  30.                 switch ( action ) {
  31.                     case 'fast-backward':
  32.                         // cv.moveToFirstPage();
  33.                         break;
  34.                     case 'step-backward':
  35.                         // cv.moveToPreviousPage();
  36.                         pageIndex -= 1
  37.                         break;
  38.                     case 'step-forward':
  39.                         // cv.moveToNextPage();
  40.                         pageIndex += 1
  41.                         console.log( pageIndex )
  42.                         break;
  43.                     case 'fast-forward':
  44.                         // cv.moveToLastPage();
  45.                         break;
  46.                 }
  47.                 //更新分页文本
  48.                 display.innerHTML = ( pageIndex + 1 ) + ' / ' + ( pageCount );
  49.                 // 确定哪些分页按钮启用/禁用
  50.                 enableBackwards = pageIndex <= 0;
  51.                 enableForwards = pageIndex >= pageCount - 1;
  52.                 // 启用/禁用分页按钮
  53.                 fb.disabled = enableBackwards;
  54.                 sb.disabled = enableBackwards;
  55.                 sf.disabled = enableForwards;
  56.                 ff.disabled = enableForwards;
  57.             }

  58.             // initialize the grid
  59.             var grid = new wijmo.grid.FlexGrid( '#theGrid', {
  60.                 autoGenerateColumns: false, //自定义显示表头名
  61.                 columns: [ {
  62.                     binding: 'Number',
  63.                     header: '序号',
  64.                     width: "*"
  65.                 }, {
  66.                     binding: 'Code',
  67.                     header: '编码',
  68.                     width: "*"
  69.                 }, {
  70.                     binding: 'Name',
  71.                     header: '名称',
  72.                     width: "*"
  73.                 }, ],
  74.                 itemsSource: cv,
  75.                 selectionMode: wijmo.grid.SelectionMode.Row
  76.             } );
  77.         } );
复制代码

我自定了总页数 和 当前页,这样的话这个控件的分页方法都没用了。得我自己处理吧

本帖子中包含更多资源

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

x
回复 使用道具 举报
3wldjnba123
注册会员   /  发表于:2017-2-5 18:06:04
地板
还有就是 加载数据的过程中,控件表格没有显示 加载中的动态效果呀???这个如果获取的数据长点那用户体验也很不好啊?
回复 使用道具 举报
3wldjnba123
注册会员   /  发表于:2017-2-5 20:13:04
16#
汗服务器一直说失败……结果我就一直重复发……
回复 使用道具 举报
dexteryao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2017-2-6 08:38:20
17#
您好,Wijmo是一个纯前端的控件,要实现服务端的分页筛选,这些功能都需要您在接口中完成,查询数据后进行绑定。
“加载中的动态效果”这个您在调用您查询接口时显示一个效果,接口调用successed或者failed之后隐藏。具体如何显示可以根据您页面整体风格决定。
关于导出,由于时服务端分页,网页端只能获取到当前页的数据,不可能导出所有数据。如果由网页端导出所有数据,还是必须要把所有数据先传输到前端再导出,大数据的话需要时间去下载数据。一般对于大数据的导出都是放到服务端去处理,有时数据量过大时还需要异步批处理,以免长时间占用服务器。

回复 使用道具 举报
dexteryao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2017-2-8 10:18:06
18#
您好,

找到一个Server端分页的demo 您可以看下
http://demos.wijmo.com/5/SampleE ... erverCollectionView

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部