2017-08-16 4 views
0

J'ai une grille Ext avec le modèle CheckBox Selection et j'ai rendu les colonnes mobiles. Une fois que je déplace les colonnes, je ne suis pas en mesure de récupérer dataindex des colonnes, comment obtenir cela? J'avais modal cellulaire et je récupérait parfaitement avecComment obtenir des colonnes modifiées après columnmove() dans Ext Grid avec le modèle CheckBox Selection

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

var = 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' 

});

Ne pas obtenir les valeurs « selModel.getHeaderCt(). GetHeaderAtIndex (colIndex) .dataIndex »

+0

Que voulez-vous dire « nouvelles colonnes »? Montrez votre code et où est exactement votre problème. De préférence avec un travail [violon] (https://fiddle.sencha.com/#home). – MarthyM

+0

Les nouvelles colonnes désignent les colonnes après mouvement. –

+0

Je ne vois pas 'colIndex' défini n'importe où, aussi, si vous avez besoin d'accéder' selModel.getHeaderCt(). GetHeaderAtIndex (colIndex) .dataIndex' dans une boucle, stockez-le dans une variable au préalable. Votre code est vraiment difficile à orienter. Si vous voulez juste obtenir un 'dataIndex' de la colonne déplacée, vous avez le' colum' accessible directement dans votre écouteur 'columnmove'. – MarthyM

Répondre

0

Si vous voulez obtenir le dataIndex de la colonne déplacé, vous pouvez le faire chez l'auditeur columnmove, comme si :

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

il convient de noter, que l'événement a columnmove l'argument toIndex, mais il est l'indice visible de la colonne. Pour obtenir l'index réel de la colonne, vous pouvez appeler le column.getIndex(). Si vous souhaitez obtenir toutes les colonnes après les avoir déplacées, vous pouvez appeler la méthode getGridColumns() du grid header container.

grille ayant, vous pouvez obtenir toutes les colonnes comme ceci:

var allColumns = grid.getView().getHeaderCt().getGridColumns();