ExtJS GridPanel加上复选框之后,行选中问题
ExtJS GridPanel加上复选框之后,选择行和复选框冲突,当选择某行后,再在复选框中,取消勾选,就无法取消。网上找了些资料。推荐的方法是重写CheckboxSelectionModel的handleMouseDown事件,代码如下:
Ext.override(Ext.grid.CheckboxSelectionModel, {
handleMouseDown: function(g, rowIndex, e) {
if (e.button !== 0 || this.isLocked()) {
return;
}
var view = this.grid.getView();
if (e.shiftKey && !this.singleSelect && this.last !== false) {
var last = this.last;
this.selectRange(last, rowIndex, e.ctrlKey);
this.last = last; // reset the last
view.focusRow(rowIndex);
} else {
var isSelected = this.isSelected(rowIndex);
if (isSelected) {
this.deselectRow(rowIndex);
} else if (!isSelected || this.getCount() > 1) {
this.selectRow(rowIndex, true);
view.focusRow(rowIndex);
}
}
}
});
单运行中发现,事件确实重载了,但:var isSelected = this.isSelected(rowIndex);
永远是FALSE,即使该行的复选框已经选择。导致这个功能无法实现。
请大家帮忙分析下,是什么原因导致的,有什么办法获取当前行中,CHECK是否被勾选了。
补充点:断点跟踪,rowIndex是正确的。