Запись не является функцией - PullRequest
0 голосов
/ 29 октября 2018

У меня есть какой-то магазин, в котором формируются данные. На панели это выглядит как «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 не является функцией».

Пожалуйста, помогите мне понять, что я не так делаю?

...