FineUI 官方论坛

标题: 【已解决】RegionPanel嵌套Grid全选问题 [打印本页]

作者: SwordElf    时间: 2017-9-18 16:44
标题: 【已解决】RegionPanel嵌套Grid全选问题
本帖最后由 SwordElf 于 2017-9-20 09:04 编辑

RegionPanel嵌套具有TemplateField(内含checkbox),如AppBox的角色权限,点击全选时,无法选中所有checkbox。经测试,如果Grid未嵌套到RegionPanel,没问题,如果嵌套到RegionPanel,则无法选中全部checkbox。
[attach]10627[/attach]

作者: shihahayue    时间: 2017-9-18 20:30
本帖最后由 shihahayue 于 2017-9-18 20:33 编辑

我下班看了一眼,由于使用了RegionPanel,导致Grid默认view变化,Extjs自动启用滚动渲染,会把Grid滚动条之外的数据延迟渲染,渲染后会触发viewConfig.getRowClass方法,返回FineUI自自定义样式'f-grid-row'。
解决方法有很多种,比如关闭滚动渲染,这样可能会影响效率,再比如获取渲染完成事件,在事件后判断是否是全选或者上一次的选中状态,再执行一遍。这个事件有很多因为在渲染后触发了一堆事件,我试了一个itemadd事件,判断机制和缓存你自己写吧。
  1.             grid.getView().on('itemadd', function (records,index) {
  2.                      selectCheckbox(true);//测试
  3.                      //写判断方法 判断该行选中状态重新选中
  4.             });
复制代码
这个问题比较深了是Extjs的问题,我也不太会了,还是看老大是怎么解决的吧

作者: sanshi    时间: 2017-9-19 17:01
shihahayue 发表于 2017-9-18 20:30
我下班看了一眼,由于使用了RegionPanel,导致Grid默认view变化,Extjs自动启用滚动渲染,会把Grid滚动条之 ...

最简单的办法是关闭滚动渲染,之前的版本 extjs v4.x 应该是没有这个东西的,不也正常工作,只要表格单页的数据量不大就行。
作者: SwordElf    时间: 2017-9-20 08:54
本帖最后由 SwordElf 于 2017-9-20 08:56 编辑

经测试,解决办法为重新设置bufferedRenderer的ViewSize,设置为足够大即可:
  1. F(gridID).bufferedRenderer.setViewSize(100000);
复制代码


作者: shihahayue    时间: 2017-9-20 10:44
SwordElf 发表于 2017-9-20 08:54
经测试,解决办法为重新设置bufferedRenderer的ViewSize,设置为足够大即可:

这个好使啊,当时试了,让我注释了,可能是数写少了




欢迎光临 FineUI 官方论坛 (https://www.fineui.com/BBS/) Powered by Discuz! X3.4