У меня есть Ext.grid.Panel , которая показывает несколько столбцов.Одним из них является поле со списком со статическим предопределенным набором выбираемых значений.
В некоторых записях данных (столбцах) я хочу отключить поле со списком.Отключение зависит от другого значения столбца.
Как мне это сделать?
Дополнительные сведения:
После рендеринга данных ячейки столбца в поле со списком я не могу вернуть ссылку намодель данных столбца в слое afterrender .
Если я смогу повторно ссылаться на объект данных, тогда я могу принять решение о том, чтобы разрешить сделать выбор из поля со списком.Некоторые столбцы (кортежи данных) позволяют выбрать другое значение из поля со списком, другие - нет.
Фон:
Включено редактирование ячейки панели.У меня есть один столбец, который представляет собой раскрывающийся список с определенными значениями, взятыми из полученных данных.
Хранилище, на которое я могу сослаться в методе afterrender, не является хранилищем, содержащим все данные таблицы.Он просто содержит статические данные Big-Medium-Low столбца.Но мне нужен магазин ряда;или, вернее, правильный ряд данных, который хранится в этом более глобальном хранилище.
Ext.define( 'MyTable',{
extend: 'Ext.grid.Panel',
xtype:'myXtypeName',
mixins: {
field: 'Ext.form.field.Field'
},
plugins: [
Ext.create('Ext.grid.plugin.CellEditing', { clicksToEdit: 1} )
],
store: Ext.create( 'Ext.data.Store', {
data: [],
autoLoad: false,
} ),
columns: [
{
header: '#',
dataIndex: 'id',
},
{
header: 'Severity',
dataIndex:'correctionSeverity',
sortable: false,
renderer: function(value, metaData, record, rowIndex, colIndex, store, view) {
var myTable = Ext.ComponentQuery.query('myXtypeName');
myTable[0].severityChangeable[ record.id ] = record.data.correctionType == 'Changed';
return value;
},
editor: Ext.create( 'Ext.form.field.ComboBox', {
queryMode: 'remote',
store: Ext.create( 'Ext.data.Store', {
fields: ['id', 'text'],
data: [ { id:'entry0', text:'Big' },
{ id:'entry1', text:'Medium' },
{ id:'entry2', text:'Low' } ],
} ),
valueField: 'id',
displayField: 'text',
editable: false,
forceSelection: true,
listeners: {
afterrender: function(combo, eOpts) {
// how to access the underlaying entry (row data) instead of just the column?
// by another value of the
var rowData = ???;
if ( rowData['preventColumnDropdown'] == true ) {
combo.disable();
}
},
change: function(combo, newValue, oldValue, eOpts) {
// do something
},
}
}),
}
],
initComponent: function() {
this.callParent(arguments);
this.initField();
},
setValue: function(value) {
this.store.loadData( value );
},
});
Я надеюсь, что моя точка зрения и проблема понятны.Пожалуйста, дайте мне знать, если не так ...
Я использую ExtJS 6.0.0 classic.