2014-01-16 1 views
0

셀 편집 및 행 선택 모델이있는 표가 있습니다. 탭을 사용하여 다음 셀로 이동하고 편집을 시작하지만 편집을 건너 뛸 필요가있는 셀이 있지만 탭을 페어링하면 다음 편집 가능한 셀로 이동해야합니다.EXTJS 4 - 그리드를 통해 탭 키를 사용할 때 개별 셀을 건너 뛰지 만 탭 누름 시작 다음 편집 가능한 셀을 편집하는 방법?

"beforeedit"이벤트에서 "return false"로 설정하면 전체 편집 과정을 취소하므로 다시 마우스를 사용해야합니다.

어떻게 셀을 건너 뛸 수 있지만 탭 작동을 유지할 수 있습니까? 현재 그리드 설정으로

Ext.selection.RowModel.override({ 
     onEditorTab: function(editingPlugin, e) { 
      var me = this, 
      view = me.views[0], 
      record = editingPlugin.getActiveRecord(), 
      header = editingPlugin.getActiveColumn(), 
      position = view.getPosition(record, header), 
      direction = e.shiftKey ? 'left' : 'right', 
      columnHeader; 

     // We want to continue looping while: 
     // 1) We have a valid position 
     // 2) There is no editor at that position 
     // 3) There is an editor, but editing has been cancelled (veto event) 

     do { 
      position = view.walkCells(position, direction, e, me.preventWrap); 
      columnHeader = view.headerCt.items.getAt(position.column); 
     } while (position && (!columnHeader.getEditor(record) || !editingPlugin.startEditByPosition(position))); 
    }  
}); 
+0

코드는 어디에 있습니까? 우리는 그것을 생각할 수있게 여기에 두어야합니다! –

+0

나는 이것이 필요하다고 생각하지 않는다. 그러나 원래 게시물을 편집했습니다. – HyGy

+0

내 대답보기 http://stackoverflow.com/questions/16016073/how-to-skip-over-particular-cells-when-tabbing-through-an-ext-grid/37680711#37680711 – firnnauriel

답변

0

: 여기

 plugins: [ 
      Ext.create('Ext.grid.plugin.CellEditing', { 
       clicksToEdit: 1, 
       listeners: { 
        beforeedit: { 
         fn: me.onCellEditingBeforeEdit, 
         scope: me 
        } 
       } 
      }) 
     ] 

는 전에 편집 기능입니다

var grid = Ext.create('Ext.grid.Panel', { 
    ... 
    selModel: Ext.create('selection.cellmodel', { 
     onEditorTab: function(editingPlugin, e) { 
      var me = this, 
       direction = e.shiftKey ? 'left' : 'right', 
       position = me.move(direction, e); 

      if (position) { 
       while(!editingPlugin.startEdit(position.row, position.column)){ 
        position = me.move(direction, e); 

        // go to first editable cell 
        if(!position) editingPlugin.startEdit(0, 1); // TODO: make this dynamic 
       } 
       me.wasEditing = false; 

      } else { 
       // go to first editable cell 
       if (editingPlugin.startEdit(0, 1)) { // TODO: make this dynamic 
        me.wasEditing = false; 
       } 
      } 
     }, 
    }), 
    //selType: 'cellmodel', // remove selType 
    ... 
}) 
0

사용이 : 나는 그물 포럼에 어딘가에 해결책을 발견

onCellEditingBeforeEdit: function(editor, e, eOpts) { 

    var isEditable=this.isCellEditabe(editor, e); // return false if the cell is not editable 

    if (!isEditable) 
    { 
     return false; 
    } 

}