2013-06-16 2 views
0

행을 선택하려면 checkboxmodel 사용하고 있지만 일부 논리를 기반으로 선택을 사용할 수없는 일부 행을 만들고 싶습니다 ... 여기 내 노력하고 있지만 'beforeselect'함수도 않습니다 화재비활성화 행 선택 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 이벤트는 그리드의 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

이벤트가 발생하지 않는다는 것을 어떻게 알 수 있습니까? 그것은해야하지만 내 생각 엔 이 정의되어 있지 않고 실행을 중단합니다. 왜냐하면 getSelection()은 선택이 발생하기 전에 빈 배열을 반환하기 때문입니다.

두 번째 인수 인 beforeselect을 사용하면됩니다.이 값은 선택 항목에 추가 될 레코드입니다.

그래서 당신은 훨씬 간단한 방법으로 리스너를 구현할 수 :보기 설정에서

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

그것은 사실이다, beforeselect는 발사하지 않는다, 나는 당신이 말한 것을 시도했다, 나는 또한 단순히 이것을 시도했다. beforeselect : function (selModel, record) { alert ('d'); Firebug/firefox/firefox에서 가져온 것이 없습니다 –

+0

어떤 버전의 Ext를 사용하고 있습니까? 선택 모델 대신 표 패널에 직접 리스너를 추가해야합니다. [ 'beforeselect' for grid] (http://docs.sencha.com/extjs/4.0.7/#!/api/Ext.panel.Table-event-beforeselect)는 4.0.0부터 사용 가능합니다. ['CHeckboxModel']에 4.0.2부터 사용 가능 (http://docs.sencha.com/extjs/4.0.7/#!/api/Ext.selection.RowModel-event-beforeselect) ... – rixo

+0

사용하고 있습니다. 4.0.2 –