2017-04-11 46 views
0

ExtJs对我来说是一个新的世界。我希望我能很好地解释这个问题。在ExtJs中获得正确的colIdx

我有一个网格与不同的编辑器列。如果我改变它并保存它,我必须改变输出。

我这样做是与

e.row.cells[e.colIdx].childNodes[0].innerText = '{s name=column/express/yes}JA{/s}'; 
    e.row.cells[e.colIdx].classList.add("warning"); 

如果我改变在同一时间2个不同的领域,e.colIdx已经不适合右侧立柱。

是否有getter或其他任何东西来获取特殊网格列的列?

下面是完整的代码

onSavePosition: function(editor, e, store, options) { 
    var me = this,positionStore; 
    if (((e.newValues.md_express != e.originalValues.md_express) && e.record.internalId > 0) 
     || e.newValues.md_supplier != e.originalValues.md_supplier) { 
      var customCallback = function (position, success) { 
       Ext.Ajax.request({ 
        method: 'POST', 
        url: '{url controller=AttributeData action=saveData}', 
        params: { 
         _foreignKey: e.record.internalId, 
         _table: 's_order_details_attributes', 
         __attribute_md_express: Number(e.newValues.md_express), 
         __attribute_md_supplier: e.newValues.md_supplier 
        }, 
        success:function(response){ 
         var t=this; 
         me.getOrderList().store.load(); 
         var selectedRowIndex=e.grid.getSelectionModel().getCurrentPosition().row; 
         var selectedRowRecord=e.grid.getStore().getAt(selectedRowIndex); 
         selectedRowRecord.set('md_express',e.newValues.md_express); 
         selectedRowRecord.set('md_supplier',e.newValues.md_supplier); 
         selectedRowRecord.commit(); 

         debugger; 
         if((e.newValues.md_express != e.originalValues.md_express)) { 
          if (e.newValues.md_express == true) { 
           e.row.cells[e.colIdx].childNodes[0].innerText = '{s name=column/express/yes}JA{/s}'; 
           e.row.cells[e.colIdx].classList.add("warning"); 
          } else { 
           e.row.cells[e.colIdx].childNodes[0].innerText = '{s name=column/express/no}NEIN{/s}'; 
           e.row.cells[e.colIdx].classList.remove("warning"); 
          } 
         } 


        } 
       }); 
      }; 


      options.callback = customCallback; 
    } 

    me.callParent([editor, e, store, options]); 
} 
+0

找到你说的是一个ExtJS网格或HTML表?因为如果它是ExtJS网格,请查看[编辑者网格的基本样本](http://examples.sencha.com/extjs/6.0.2/examples/kitchensink/#cell-editing)。 – Alexander

回答

0

我的解决办法是

var colIdx = me.getColumnIndex(editor.grid,'md_express'); 


    getColumnIndex: function(grid, dataIndex) { 
    gridDataIndices = Ext.Array.pluck(grid.columns, 'dataIndex'); 
    return Ext.Array.indexOf(gridDataIndices, dataIndex); 
} 

本发回给定列的列索引在我的网格。

这里 how to find column index using dataIndex Extjs 4