我正在使用checkboxmodel来选择行,但我想根据某些逻辑使某些行被禁用选择... 这是我正在尝试但是'beforeselect'功能甚至不会触发
selModel: Ext.create('Ext.selection.CheckboxModel', {
checkOnly: true,
mode:'multi',
listeners: {
beforeselect:function(grid){
var grid=Ext.getCmp('mylist');
var selectionModel=grid.getSelectionModel();
var selectedRecords=selectionModel.getSelection();
var myValue=selectedRecords[0].get('nowreceive');
var myvalue1=selectedRecords[0].get('received');
if(myValue>myvalue1)
{return false;}
else
return true;
}} }
),
答案 0 :(得分:3)
视图配置中的beforecellmousedown事件对我有用。这是在网格的viewconfig中完成的......
viewConfig: {
listeners: {
beforecellmousedown: function(view, cell, cellIdx, record, row, rowIdx, eOpts){
var myvalue=record.get('quantity_ordered');
var myvalue1=record.get('quantity_received')
if(myvalue==myvalue1)
{
return false;
}
else {
return true;
}
}
}
},
答案 1 :(得分:0)
你怎么知道事件没有解雇?它应该是,但我的猜测是selectedRecords[0]
未定义并且导致执行崩溃,因为getSelection()
可能在任何选择发生之前返回一个空数组。
你应该做的是使用beforeselect
的第二个参数,这是将要添加到选择中的记录。
所以你可以用更简单的方式实现你的监听器:
beforeselect: function (selModel, record) {
if (record.get('nowreceive') > record.get('received')) {
return false;
}
}