У меня есть какой-то магазин, в котором формируются данные. На панели это выглядит как «fieldName» и текстовое поле (в зависимости от вызванной формы).
Например, на одной форме отображается «название документа» и поле, на другой - дата продажи и поле даты. Данные формируются динамически.
Вот магазин:
someStore = new Ext.data.JsonStore({
url: objectUrlAddress,
baseParams: {
'objectID' : objectID
},
root: 'Fields',
fields: [
{name: 'Hint'},
{name:'Type', type: 'int'},
{name: 'Value'},
{name: 'Index', type: 'int'},
{name: 'IsRequired', type:'bool'},
{name: 'Identifier'},
{name: 'EnumList'},
{name: 'Directory'},
{name: 'Data'}
]});
Вот сетка
var templateGrids = new Ext.grid.EditorGridPanel({
id: 'tableId',
height:300,
width: '100%',
clicksToEdit:1,
frame: true,
store: tableTempStore,
columns:
[{header: 'Объект', width:200, dataIndex: 'Hint'},
{header: 'Значение',
dataIndex: 'Value',
width:300,
editor: {
xtype: 'textfield'
},
getCellEditor: function(record) {
var xtype = null,
args = {
fieldLabel: record.get('Hint'),
allowBlank: !record.get('IsRequired'),
value: record.get('Data'),
disabled: false
};
switch ('Type') {
case 0: // int
xtype = new Ext.form.NumberField();
args.allowDecimals = false;
break;
case 1: // decimal
xtype = new Ext.form.NumberField();
args.allowDecimals = true;
break;
case 2: // text
xtype = new Ext.form.TextField();
break;
case 3: // date
xtype = new Ext.form.DateField();
args.emptyText = 'дд.мм.гггг чч:мм';
args.format = 'd.m.y H:i';
break;
case 4: // enum
break;
case 5: // sql
var dataValues = Ext.util.JSON.decode(record.get('EnumList'));
var dataArray = Object.keys(dataValues).map(function(k) { return [k, dataValues[k]] });
xtype = 'Ext.form.field.ComboBox ';
args.store = new Ext.data.ArrayStore({
fields: [
{name: 'myId', type: 'string'},
{name: 'displayText'}
],
data: dataArray
});
break;
}
return new Ext.grid.CellEditor ({
field: Ext.create(xtype, args)
});
}
}]
});
Тип ячейки может отображаться в сетке в зависимости от значения «Тип».
Например, если Type == 2, редактор столбца должен иметь значение textvalue и т. Д. Но мой слушатель не работает и тип не меняется. Кроме того, я получаю сообщение об ошибке «record.get не является функцией».
Пожалуйста, помогите мне понять, что я не так делаю?