禁用行选择extjs mvc

时间:2013-06-16 10:30:39

标签: extjs extjs-mvc

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

2 个答案:

答案 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;
    }
}