#extjs
#extjs
Вопрос:
Я создал сетку, используя библиотеку extjs.
Сначала создана модель:
Ext.define('Option', {
extend: 'Ext.data.Model',
idProperty: 'OptionId',
fields: [
{ name: 'TradeDate' },
{ name: 'OptionType' }
]
});
Во-вторых, я создал массив столбцов:
var allColumns = [
{
text: 'Option Id',
width: 75,
sortable: true,
cls: 'grid-header-LadderStep',
dataIndex: 'ExternalId',
renderer: RenderColumn
},
{
text: 'Trade Date',
width: 65,
sortable: true,
cls: 'grid-header-LadderStep',
dataIndex: 'TradeDate',
renderer: RenderColumn
}
]
В списке столбцов renderer
событие определяется ниже:
function RenderColumn (value, metaData, record, rowIdx, colIdx, store, view) {
metaData.style = 'background-color:#BBD5EE !important';
return value;
};
Как я могу узнать из RenderColumn
функции, dataindex
которую я определил в списке столбцов?
Это может быть ExternalId
или TradeDate
в случае, который я описал.
Я нашел решение:
grid.columns[colIdx].dataIndex
Где grid — это глобальная сеточная переменная.
Ответ №1:
Хорошо, итак, это еще не было задокументировано командой Sencha, но доступно. Вы должны сделать это с помощью метода, доступного в контейнере заголовка в сетке Ext.grid.View
:
renderer: function(val, meta, rec, rowIdx, colIdx, store, view) {
var column = view.getHeaderAtIndex(colIdx);
var dataIndex = column.dataIndex;
}
Причина, по которой это работает, заключается в том, что Ext.grid.View
наследует от Ext.table.View
which имеет метод, getHeaderAtIndex
, который должен быть общедоступным, но еще не был задокументирован.
Я обнаружил, что некоторые вещи еще не задокументированы с помощью этого
Комментарии:
1. подождите … это не сработает из-за того, что индекс потенциально не совпадает… Я пересмотрю
2. Как я могу определить имя поля?
3. Это в определении вашей модели. Если вы посмотрите на свой
fields
параметр конфигурации, вы увидите, что каждое поле было определено с помощью aname
.4. Да, я нахожусь в процессе выяснения, предоставляет ли Ext4 достаточно информации.
Ответ №2:
Вы можете указать ‘defaultRenderer’, а затем использовать этот.dataIndex. Вот так:
{
text: 'Trade Date',
width: 65,
sortable: true,
cls: 'grid-header-LadderStep',
dataIndex: 'TradeDate',
defaultRenderer: RenderColumn
}
Теперь вы можете использовать этот.dataIndex в своих средствах визуализации.