找回密码
 立即注册

QQ登录

只需一步,快速开始

songjiefa

注册会员

3

主题

7

帖子

69

积分

注册会员

积分
69
最新发帖
songjiefa
注册会员   /  发表于:2016-7-14 18:03  /   查看:4493  /  回复:3


如图,嵌套表里面有50行数据,动态生成的,用code展开,整个grid都不自动生成column。
一点击展开时,数据加载一半,延迟了几百毫秒,再显示全部内容,
请问这大概是什么方面的原因引起的?我排查一下。

恕我无法贴源代码,但是自己写的Demo又重现不出来。

2.
  1. <!DOCTYPE html>
  2. <html xmlns="http://www.w3.org/1999/xhtml">
  3. <head>
  4.     <title></title>
  5.     <!--jQuery References-->
  6.     <script src="http://code.jquery.com/jquery-1.11.1.min.js" type="text/javascript"></script>
  7.     <!-- Wijmo references (required) -->
  8.     <script src="http://cdn.wijmo.com/5.20152.84/controls/wijmo.min.js" type="text/javascript"></script>
  9.     <link href="http://cdn.wijmo.com/5.20152.84/styles/wijmo.min.css" rel="stylesheet" type="text/css" />

  10.     <!-- Wijmo controls (optional, include the controls you need) -->
  11.     <script src="http://cdn.wijmo.com/5.20152.84/controls/wijmo.grid.min.js" type="text/javascript"></script>
  12.     <script src="scripts/wijmo.grid.detail.min.js"></script>
  13.     <script src="scripts/wijmo.odata.min.js"></script>
  14.     <script type="text/javascript">
  15.         var countryData, statesData;
  16.         $(document).ready(function () {
  17.             var countries = 'US,Germany,UK,Japan,Italy,Greece'.split(',');
  18.             var cdata = [];
  19.             for (var i = 0; i < 5; i++) {
  20.                 cdata.push({
  21.                     cid: i,
  22.                     country: countries[i % countries.length],
  23.                     date: new Date(2014, i % 12, i % 28),
  24.                     amount: Math.random() * 10000,
  25.                     active: i % 4 === 0
  26.                 });
  27.             }
  28.             var sdata = [];
  29.             for (var i = 0; i < 5; i++) {
  30.                 sdata.push({
  31.                     sid: i,
  32.                     state: 'none',
  33.                     date: new Date(2014, i % 12, i % 28),
  34.                     amount: Math.random() * 10000,
  35.                     active: i % 4 === 0
  36.                 });              
  37.             }
  38.                        
  39.             // get categories and products from server
  40.             countryData = new wijmo.collections.CollectionView(cdata);
  41.             statesData = new wijmo.collections.CollectionView(sdata);

  42.             // initialize detail visibility mode
  43.             //var detailMode = wijmo.grid.detail.DetailVisibilityMode.ExpandSingle;

  44.             var grid = new wijmo.grid.FlexGrid('#gsFlexGrid');
  45.             grid.itemsSource = countryData;
  46.             var dp = new wijmo.grid.detail.FlexGridDetailProvider(grid);
  47.             dp.createDetailCell = function (row) {
  48.                 var cell = document.createElement('div');
  49.                 grid.hostElement.appendChild(cell);
  50.                 var detailGrid = new wijmo.grid.FlexGrid(cell, {
  51.                     headersVisibility: wijmo.grid.HeadersVisibility.Column,
  52.                     autoGenerateColumns: false,
  53.                     itemsSource: sdata,
  54.                     columns: [
  55.                         { header: 'ID', binding: 'sid' },
  56.                         { header: 'State', binding: 'state' },
  57.                         { header: 'Date', binding: 'date' },
  58.                         { header: 'Amount', binding: 'amount' },
  59.                         { header: 'Active', binding: 'active' }
  60.                     ]
  61.                 });
  62.                 return cell;
  63.             };
  64.                         var i=0;
  65.                         grid.formatItem.addHandler(function(grid,event){
  66.                                 console.log(i++);
  67.                         });
  68.         });

  69.       
  70.     </script>
  71. </head>
  72. <body>
  73.     <div id="gsFlexGrid"></div>
  74. </body>
  75. </html>
复制代码
上面这段代码渲染的时候为什么wijmo要重新渲染3次?我的第一个问题是不是这个原因引起的?
如图所示:

本帖子中包含更多资源

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

x

3 个回复

倒序浏览
Alice
社区贡献组   /  发表于:2016-7-15 10:59:37
沙发
谢谢您的反馈。
对于您的2个问题:
1.仅仅从提供的资料,无法重现问题,所以不知道是什么引起的。
2.您是在formatItem里使用console。  对于formatItem,会对所有单元格做刷新,FlexGrid 将回收并重复使用单元格实例。
请点击评分,对我的服务做出评价!  5分为非常满意!

葡萄城控件服务团队

官方网站: http://www.gcpowertools.com.cn
回复 使用道具 举报
songjiefa
注册会员   /  发表于:2016-7-15 17:19:59
板凳
Alice 发表于 2016-7-15 10:59
谢谢您的反馈。
对于您的2个问题:
1.仅仅从提供的资料,无法重现问题,所以不知道是什么引起的。

谢谢你的回答,我找到原因了。原因在于wijmo生成grid的时候,overflow为auto,但其父标签我设置了为hidden,就会显示滚动条又消失,所以造成卡顿的感觉。
  1. <div wj-part="root" style="position:absolute;width:100%;height:100%;max-height:inherit;overflow:auto;-webkit-overflow-scrolling:touch">
复制代码

但现在想修改wijmo内部的样式,由于不能直接改wijmo内部js,所以添加了这条语句
  1. $('[wj-part="root").css('overflow','hidden');
复制代码


现在暂时没发现什么问题。但还需要继续测试。

这样改符合wijmo的规范不?
回复 使用道具 举报
Alice
社区贡献组   /  发表于:2016-7-15 18:13:22
地板
songjiefa 发表于 2016-7-15 17:19
谢谢你的回答,我找到原因了。原因在于wijmo生成grid的时候,overflow为auto,但其父标签我设置了为hidde ...

谢谢您的反馈。
wijmo5是基于HTML5的,只要是符合HTML5的规则都可以使用
请点击评分,对我的服务做出评价!  5分为非常满意!

葡萄城控件服务团队

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