2014-10-16 31 views
1

我正在使用分组网格包含校验列。我需要控制复选框的选择,即允许或不允许选择。我使用beforecheckchange函数来做到这一点。为了解释这个问题,考虑这个场景。有五个组,每组包含3行,其中只有最后一组只扩展。 如果我选择最后一行检查列,则将返回的rowIndex将为2,因为只有3行可见。这是虚拟的或可见的rowindex返回如何知道/获取实际的行索引,而没有展开所有的组。Extjs分组网格校验列更改实际行索引

我的布什要求要求我知道确切的行索引以从商店获取记录。检查列与商店中的数据/记录映射,允许我决定允许检查复选框。还有一个从下面的组中检查,然后从相同级别复选框更高的需求也被检查。

我正在使用ExtJS 5.x.x框架。

我检查了与树网格相同的问题。

感谢您提前。

回答

3

我相信,这将解决您的问题:

// 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

+0

非常感谢您的解决方案。我在代码中快速尝试了一下,似乎完成了这项工作....给我一两天来完全测试这个解决方案,在我的代码中将会关闭这个线程。接力棒。 :) – Ameya 2014-10-21 05:42:51

+0

没问题,两天前我不得不解决这个问题。真正的问题是beforecheckchange不会返回记录,所以您必须以其他方式找到它。很高兴我能帮上忙。 – 2014-10-21 05:50:45

+0

如果您试图表述相同的话题,您的另一个帮助就会涉及到同一主题。我们是否可以通过任何需要禁用和启用某些框的方式来获得列的复选框外部组件。 – Ameya 2014-10-22 06:56:38

0

您使用的是什么版本的ExtJS?

ExtJS 4.2.1中至少有两个已知的分组错误,分别在4.2.2(EXTJS-10027)和4.2.3(EXTJS-10043)中修复。

在您的Ext版本(或通过简单升级)修复这些错误比为每个网格编写解决方法更容易。

如果这不能解决您的问题,并且您在Ext4上,请考虑滥用底层模型上的“convert”函数。这恐怕不再适用于ExtJS5了,但我暂时认为这是一个很好的临时解决方案。

+0

我使用ExtJS的版本5中,还更新了我的问题。那么在ExtJS 5中有没有现成的解决方法? – Ameya 2014-10-17 10:44:00

+0

rowIndex与您在grid.beforecellclick事件中获得的相同吗?在beforecellclick事件中,你也会得到记录。您可以查看Ext代码以了解他们如何执行此操作。 – Alexander 2014-10-17 11:03:32

+0

单元格单击不起作用的检查列,虽然它适用于其他列 – Ameya 2014-10-17 17:04:04