0

我正在使用 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;
        }}  }
    ),
4

2 回答 2

3

视图配置中的 beforecellmousedown 事件对我有用。这是在网格的视图配置中完成的...

 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;
                   }
            }
        }
    },
于 2013-06-27T10:49:08.280 回答
0

你怎么知道事件没有触发?应该是,但我的猜测是它selectedRecords[0]没有定义并且会使您的执行崩溃,因为getSelection()在发生任何选择之前可能会返回一个空数组。

您应该做的是使用 的第二个参数beforeselect,即要添加到选择中的记录。

因此,您可以以更简单的方式实现您的侦听器:

beforeselect: function (selModel, record) {
    if (record.get('nowreceive') > record.get('received')) {
        return false;
    }
}
于 2013-06-16T12:53:21.110 回答