功能是有一个弹出窗口,其中包含选定的基本网格行:基本网格包含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(' ') + '"> </div>';
}
如果我评论reassignStore.add(rec);或reassignStore.removeAt(indexNumber); checkChange方法我可以正确取消选中(即使用css,所以我可以在视觉上看到未选中的方框)
这是一个错误吗?当我取消选中时,为什么我没有看到css应用?
答案 0 :(得分:1)
此列包含复选框的数据类型是什么?如果它不是布尔值,则可能存在这样的问题。因为在 CheckColumn.js 中,有一个声明如下:
checked = !record.get(dataIndex);
因此,如果record.get(dataIndex) == false
,则检查结果为true,但例如record.get(dataIndex) == "false"
,则检查仍为false。在这种情况下,渲染器永远不会被调用。