取消选中Extjs4 Grid中的checkcolumn

时间:2012-04-26 00:25:11

标签: css grid extjs4

功能是有一个弹出窗口,其中包含选定的基本网格行:基本网格包含checkcolumn,如下所示:

{
        xtype: 'checkcolumn',
        text: 'Select',
        dataIndex: 'active',
        itemId: 'checkcolumnId',
        width: 55
     }

选中或取消选中复选框时引发的控制器:

'#checkcolumnId' : {
        checkchange : function(column, recordIndex, checked) {
          if(checked){
            var rec = statusStore.getAt(recordIndex);
            reassignStore.add(rec);
          }else if(statusStore.getAt(recordIndex)!=null){
            var indexNumber = reassignStore.findExact('taskId', statusStore.getAt(recordIndex).data.taskId, 0);
            reassignStore.removeAt(indexNumber);
          }
          return false;
        }
     }

重新分配商店是弹出窗口的商店,显示基本网格的选定(已选中)记录。

当我检查基本网格中行的复选框时,我可以看到该记录显示在重新分配网格中,但问题是当我再次单击复选框(基本网格的复选列)时,它不显示未选中,但它执行取消选中操作即上面的checkchange方法的错误状态。

此功能可在ext-4.0.7-gpl / examples / grid / row-editing.html中找到 使用chrome调试器我发现当我尝试取消选中基本网格中的行时,它不会调用CheckColumn.js的renderer方法,它负责更改已检查列的css。

CheckColumn.js

renderer : function(value){
        var cssPrefix = Ext.baseCSSPrefix, cls = [cssPrefix + 'grid-checkheader'];
        if (value) {
            cls.push(cssPrefix + 'grid-checkheader-checked');
        }
        return '<div class="' + cls.join(' ') + '">&#160;</div>';
    }

如果我评论reassignStore.add(rec);或reassignStore.removeAt(indexNumber); checkChange方法我可以正确取消选中(即使用css,所以我可以在视觉上看到未选中的方框)

这是一个错误吗?当我取消选中时,为什么我没有看到css应用?

1 个答案:

答案 0 :(得分:1)

此列包含复选框的数据类型是什么?如果它不是布尔值,则可能存在这样的问题。因为在 CheckColumn.js 中,有一个声明如下:

checked = !record.get(dataIndex);

因此,如果record.get(dataIndex) == false,则检查结果为true,但例如record.get(dataIndex) == "false",则检查仍为false。在这种情况下,渲染器永远不会被调用。