Extjs Grouped Grid checkcolumn更改实际rowIndex
Posted
技术标签:
【中文标题】Extjs Grouped Grid checkcolumn更改实际rowIndex【英文标题】:Extjs Grouped Grid checkcolumn change actual rowIndex 【发布时间】:2014-10-16 16:35:04 【问题描述】:我正在使用包含 checkcolumn 的 分组网格。我需要控制复选框的选择,即允许或不允许选择。我使用 beforecheckchange 函数来做到这一点。为了解释这个问题,考虑一下场景。有五个组,每个组包含 3 行,其中只有最后一个组仅被扩展。 如果我选择最后一行检查列,则返回的 rowIndex 将为 2,因为只有 3 行可见。 即返回虚拟或可见 rowindex 如何知道/获取实际行索引没有扩展所有组。
我的业务要求要求我知道确切的行索引才能从商店获取记录。检查列与来自商店的数据/记录进行映射,这使我可以决定允许检查复选框。还需要选中较低组的一个,然后还需要选中较高组的同级复选框。
我正在使用 ExtJS 5.x.x 框架。
我已经检查过树网格存在同样的问题。
提前谢谢你。
【问题讨论】:
【参考方案1】:我相信这会解决你的问题:
// You checkcolumn listeners
listeners:
beforecheckchange : function(component, rowIndex, checked, eOpts)
var row = component.getView().getRow(rowIndex),
record = component.getView().getRecord(row),
realIndex = component.getView().ownerCt.getStore().indexOf(record);
console.log(rowIndex, realIndex);
演示小提琴:https://fiddle.sencha.com/#fiddle/c3e
【讨论】:
非常感谢您的解决方案。我在我的代码中快速尝试了一下,似乎完成了这项工作......给我一两天时间在我的代码中完全测试这个解决方案将关闭这个线程。接力棒棒哒:) 没问题,我两天前就解决了这个问题。真正的问题是 beforecheckchange 不会返回记录,因此您必须以其他方式找到它。很高兴我能帮上忙。 如果您尝试过同样的问题,您会获得与同一主题相关的另一项帮助。我们是否可以通过任何方式获取该列的复选框ext组件需要禁用和启用某些框。 嗨,Ameya,我几天前已经回答了这个问题,请查看此帖子:***.com/questions/26370392/…【参考方案2】:你使用的是什么版本的 ExtJS?
ExtJS 4.2.1 中至少有两个已知的分组错误,分别在 4.2.2 (EXTJS-10027) 和 4.2.3 (EXTJS-10043) 中修复。
在您的 Ext 版本中修复这些错误(或通过简单升级)比为每个网格编写解决方法更容易。
如果这不能解决您的问题,并且您使用的是 Ext4,请考虑在底层模型上滥用“转换”功能。我担心这在 ExtJS5 中不再适用,但目前它是一个很好的临时解决方案。
【讨论】:
我正在使用 ExtJS 5 版本,也更新了我的问题。那么 ExtJS 5 中是否有现有的解决方法? rowIndex 和你在grid.beforecellclick 事件中得到的一样吗?在 beforecellclick 事件中,您也会获得记录。您可以查看 Ext 代码以了解他们是如何做到的。 在单击单元格之前对检查列不起作用,尽管它适用于其他列以上是关于Extjs Grouped Grid checkcolumn更改实际rowIndex的主要内容,如果未能解决你的问题,请参考以下文章