禁用行选择extjs mvc

禁用行选择extjs mvc,extjs,extjs-mvc,Extjs,Extjs Mvc,我正在使用checkboxmodel选择行,但我想根据某些逻辑禁用某些行的选择。。。 这是我正在尝试的,但“beforeselect”函数甚至不能启动 selModel: Ext.create('Ext.selection.CheckboxModel', { checkOnly: true, mode:'multi', listeners: { beforeselect:function(grid){ var grid=Ext.getCmp('

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

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

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

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

beforeselect: function (selModel, record) {
    if (record.get('nowreceive') > record.get('received')) {
        return false;
    }
}

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

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

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

beforeselect: function (selModel, record) {
    if (record.get('nowreceive') > record.get('received')) {
        return false;
    }
}

视图配置中的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;
                   }
            }
        }
    },

视图配置中的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;
                   }
            }
        }
    },

是的,在选择不开火之前,我试过你说的,我也试过简单的这个。。beforeselect:函数(selModel,record){alert('d'));…但是firebug/Firefox中没有任何内容。您使用的是什么版本的Ext?您应该尝试将侦听器直接添加到网格面板,而不是选择模型。从4.0.0开始提供,而从4.0.2开始仅适用于…在grid中找不到beforeselect函数这是一个事件,而不是函数。这是正确的链接。根据您的说法r comment,你的问题并不是因为这个。我想我们需要你的网格定义的全部代码来找出问题所在。没错,在ForeSelect不启动之前,我试过你说的,我也试过简单的这个..ForeSelect:函数(selModel,record){alert('d'));…但是firebug/Firefox中没有任何内容。您使用的是什么版本的Ext?您应该尝试将侦听器直接添加到网格面板,而不是选择模型。从4.0.0开始提供,而从4.0.2开始仅适用于…在grid中找不到beforeselect函数这是一个事件,而不是函数。这是正确的链接。根据您的说法r注释,您的问题并不是来自于此。我认为我们需要您的网格定义的全部代码来找出问题所在。