在ExtJs中获得正确的colIdx

时间:2017-04-11 07:40:39

标签: extjs

对我来说,ExtJs是一个新世界。我希望我能很好地解决这个问题。

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

我是用

做的
   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]);
}

1 个答案:

答案 0 :(得分: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