功能是有一个弹出窗口,其中包含选定的基本网格行:基本网格包含检查列,如下所示:
{
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;
}
}
reassign store 是弹出式存储,它显示基本网格的选定(检查)记录。
当我检查基本网格中一行的复选框时,我可以看到该记录显示在重新分配网格中,但问题是当我再次单击复选框(基本网格的检查列)时,它不会显示未选中状态,尽管它执行取消选中操作,即它进入上述 checkchange 方法的错误条件。
此功能可在 ext-4.0.7-gpl/examples/grid/row-editing.html 使用 chrome 调试器我发现当我尝试取消选中基本网格中的行时,它不会调用 CheckColumn.js 的渲染器方法,即负责更改检查列的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(' ') + '"> </div>';
}
如果我评论 reassignStore.add(rec); 或 reassignStore.removeAt(indexNumber); 我能够正确取消选中的 checkChange 方法行(即应用了 css,因此我可以直观地看到未选中的框)
这是一个错误吗?为什么我取消选中时没有看到 css 应用?