2013-06-16 6 views
0

Я использую checkboxmodel для выбора строк, но я хочу, чтобы некоторые строки были отключены на основе какой-то логики ... вот моя, что я пытаюсь, но функция «beforeselect» даже не пожарыdisable row select extjs mvc

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; 
     }} } 
    ), 

ответ

3

beforecellmousedown события в окне просмотра конфигурации работает me.This делается в 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; 
        } 
      } 
     } 
    }, 
0

Как вы узнали, что мероприятие не стреляет? Это должно быть, но я предполагаю, что selectedRecords[0] не определен и что приводит к сбою вашего выполнения, потому что getSelection(), вероятно, возвращает пустой массив до того, как произошел какой-либо выбор.

Что вы должны сделать, так это использовать второй аргумент beforeselect, который является записью, которая будет добавлена ​​к выбору.

Таким образом, вы можете реализовать слушатель в гораздо более простом способе:

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

это правда, beforeslect не стрельба, я пробовал, что вы говорите, я также попробовал просто это .. beforeselect: function (selModel, record) { alert ('d'); ... но ничего из firebug/firefox –

+0

Какую версию Ext вы используете? Вы должны попробовать добавить слушателя непосредственно к панели сетки вместо модели выбора. ['beforeselect' для сетки] (http://docs.sencha.com/extjs/4.0.7/#!/api/Ext.panel.Table-event-beforeselect) доступен с 4.0.0, в то время как это только доступный с версии 4.0.2 для ['CHeckboxModel'] (http://docs.sencha.com/extjs/4.0.7/#!/api/Ext.selection.RowModel-event-beforeselect) ... – rixo

+0

Я использую 4.0.2 –