Подтвердить что ты не робот

Как найти индекс столбца с помощью dataIndex Extjs 4

В ExtJS 3 я использовал следующий код:

grid.getColumnModel().findColumnIndex("Tasks")

Я попытался найти его в api docs, но не повезло... так как возможно, что я могу найти индекс столбца сетки с помощью dataIndex столбца или заголовка этого столбца.

4b9b3361

Ответ 1

Я думаю, вы должны найти индекс, итерации через массив grid.columns и сравнение свойства dataIndex для каждого столбца.

Пример:

var findColumnIndex = function(columns, dataIndex) {
    var index;
    for (index = 0; index < columns.length; ++index) {
        if (columns[index].dataIndex == dataIndex) { break; }
    }​​​​​​​​
    return index == columns.length ? -1 : index;
}


console.log(findColumnIndex(grid.columns, 'Task'));
console.log(findColumnIndex(grid.columns, 'Something'));

Ответ 2

Вы можете использовать запрос компонента:

var fname = grid.down('[dataIndex=firstname]');

Понадобилось некоторое время, чтобы это сделать - в документах не было примера.; -)

Ответ 3

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

return Ext.Array.indexOf(gridDataIndices, desireDataIndex);
}

ответил на форумах sencha

Ответ 4

Самый стандартный способ получить столбец dataIndex:

var column = grid.columnManager.getHeaderByDataIndex('Tasks')

Обратите внимание, что это возвращает столбец (вопреки имени функции). Это связано с тем, что заголовок сетки в ExtJS на самом деле является заголовком и содержимым столбца.

Ext.grid.column.Column docs:

Этот класс определяет определение столбца внутри Ext.grid.Grid. Он включает в себя как конфигурацию заголовка сетки, так и а также отображение данных в самой сетке.

Смотрите также: getHeaderByDataIndex docs.

Ответ 5

 var gridColumns = grid.headerCt.getGridColumns();
 for (var i = 0; i < gridColumns.length; i++) {
   if (gridColumns[i].dataIndex == 'yourdataIndex') {
    alert(i);
   }  
 }

Ответ 6

Компонентный запрос может немного замедлить работу и не гарантирует только один результат. Его немного быстрее, чтобы просто перебирать массив столбцов, принадлежащих к сетке.

Вот простая статическая утилита, которая выполняет трюк с помощью ext framework.

 findColumnDataIndex: function(columns, dataIndex) {
   var column = null;
   Ext.Array.each(columns, function(c) {
     if (c.dataIndex === dataIndex) {
       column = c;
       return false;
     }
   }, this);
   return column;
 }

Ответ 7

var RowEditor = new Ext.grid.plugin.RowEditing({...});
    RowEditor.editor.form.findField('Task');