2017-08-16 24 views
0

我有一個帶有CheckBox選擇模型的Ext Grid,並且我已經創建了可移動列。一旦我移動列,我無法檢索列的dataindex,如何得到它?我有細胞模態的,我用完全檢索它如何在帶有CheckBox選擇模型的Ext Grid中的columnmove()之後獲取修改的列

var sm = Ext.create('Ext.selection.CheckboxModel', { 
     mode: 'SIMPLE', 
     checkOnly: true, 
     listeners: { 
      selectionchange: function(sm, selected, eOpts) { 
       listCB = selected; 
       var gridID = Ext.getCmp('CiEditGrid'); 
       if(selected.length > 0){ 
        gridID.getView().removeRowCls(0, 'hidden'); 
        gridID.getView().addRowCls(0, 'custom-column1'); 
        bEnableRow = true; 
       }else{ 
        gridID.getView().addRowCls(0, 'hidden'); 
       } 
      }, 
      beforeselect: function(selModel, record, index) { 
       var gridID = Ext.getCmp('CiEditGrid'); 
       popupIndex=index; 
       colIndex=ColumnIndex; 
       EditedValues.push({ 
        colvalue:colIndex, 
        rowvalue:popupIndex 
       }); 
       if (!((ColumnIndex == undefined || ColumnIndex == 0))) 
        return false; 
      }, 
      beforedeselect: function(selModel, record, index) { 
       if (!(ColumnIndex == undefined || ColumnIndex == 0)) 
        return false; 
      }, 
     } 
    }); 

變種CiGrid = Ext.create( 'Ext.grid.Panel',{

store: mystore, 
columns: datastore.columns, 
selType: 'cellmodel', 
selModel: sm, 
id:'CiEditGrid', 
height: 775, 
columnLines: true, 
enableColumnHide:false, 
viewConfig: { 
       forceFit: false, 
       deferEmptyText: false, 
       stripeRows: true, 
       emptyText :'<div class="emptyTextClass">'+noRecordsFoundMsg+'</div>' 
      }, 
lockedViewConfig: { 
    emptyText: '' 
}, 
listeners: { 
    afterrender: function(grid, eOpts){ 
     var gridIndxArray = grid.columns; 
     for(var i=0; i<gridIndxArray.length; i++){ 
      var Indx = i-1; 
      if(Indx == -1) 
       Indx = 0; 
      ColumnIndexArray.push({ 
       dataIndx:gridIndxArray[i].dataIndex, 
       StoreIndx:Indx 
      }); 
     } 
    }, 
    columnmove: function(ct, column, fromIdx, toIdx, eOpts){ 
     isColumnreconfigured = true; 
     fromCMIdx = fromIdx; 
     toCMIdx = toIdx; 
    }, 
    itemclick: function(data, record, item, index, e, eOpts){ 
     popupIndex = index; 
     var position = data.getPositionByEvent(e); 
     ColumnIndex = position.column; 
     if(index == 0){ 
      multiCol.push({ 
       colIndex:ColumnIndex 
      }); 
     } 
     if(isColumnreconfigured){ 
      for(var i=0; i<ColumnIndexArray.length; i++){ 
       if(selModel.getHeaderCt().getHeaderAtIndex(colIndex).dataIndex == ColumnIndexArray[i].dataIndx){ //Not getting the value in selModel.getHeaderCt().getHeaderAtIndex(colIndex).dataIndex 
        colIndex = ColumnIndexArray[i].StoreIndx; 
        break; 
       } 
      } 
     } 
    } 
}, 
cls: 'custom-dirty', 
layout:'fit', 
border: false, 
autoWidth:true, 
plugins: [cellEditing], 
renderTo:'grid' 

});

沒有得到的值「selModel.getHeaderCt()。getHeaderAtIndex(colIndex).dataIndex」

+0

你是什麼意思「新列」?顯示你的代碼,確切地說是你的問題。最好有一個工作[小提琴](https://fiddle.sencha.com/#home)。 – MarthyM

+0

新欄是指移動後的欄。 –

+0

如果您需要在循環中訪問'selModel.getHeaderCt()。getHeaderAtIndex(colIndex).dataIndex',則在任何地方都看不到'colIndex',並且事先將其存儲在變量中。你的代碼真的很難定位。如果你只想得到被移動列的'dataIndex',你可以在'columnmove'監聽器中直接訪問'colum'。 – MarthyM

回答

0

如果你想獲得移動列dataIndex,你可以做到這一點在columnmove聽衆,像這樣:

columnmove: function (ct, column, fromIndex, toIndex, eOpts) { 
    var dataIndex = column.dataIndex; 
    // ... 
}, 

值得一提的是,columnmove事件具有toIndex的說法,但它是列的可見指數。要獲得列的真實索引,可以撥打column.getIndex()

如果要在移動它們後獲取所有列,可以調用grid header containergetGridColumns()方法。

有網格,你可以得到所有列像這樣:

var allColumns = grid.getView().getHeaderCt().getGridColumns(); 
相關問題