Получите и отправьте значения тега id.Extjs - PullRequest
0 голосов
/ 25 февраля 2019

В сетке есть два поля:

...
{
                    text: 'Спец. учетка',
                    sortable: true,
                    dataIndex: 'specuserName',
                    flex: 2,
                    editor: {
                        xtype: 'combobox',
                        store: 'Vendors',
                        displayField: 'name',
                        valueField: 'name',
                        //editable: false,
                        queryMode: 'remote',
                        //forceSelection: true,
                        triggerAction: 'all',
                        allowBlank: true
                    }
                },
                {
                        header: 'Сотрудники группы',
                        dataIndex: 'users',
                        flex:2,
                        editor: {
                            xtype: 'tagfield',
                            typeAhead: true,
                            queryMode: 'remote',
                            filterPickList: true,
                            triggerOnClick: true,
                            displayField: 'name',
                            valueField: 'name',
                            triggerAction: 'all',                          
                            store: 'IntraUsers',

                        }
                },
...

ViewController выглядит следующим образом:

Ext.define('App.view.MainIntranetController', {
    extend: 'Ext.app.ViewController',
    alias: 'controller.intranetcontainer',
    onGridEditorIntraEdit: function (editor, ctx, eOpts) {
        //combobox
        var vendorColIdx = 2;
        var combo = ctx.grid.columns[vendorColIdx].getEditor(ctx.record);
        var vendorRecord = combo.findRecord('name', combo.getValue());
        console.log(vendorRecord);
        ctx.record.set('specuserId', vendorRecord.get('id'));
        //tagfield
        var vendorColIdx = 3;
        var tagfields = ctx.grid.columns[vendorColIdx].getEditor(ctx.record);
        var valuetag = tagfields.getValue();
        //ctx.record.set('mainusersId', vendorRecord.get('id'));
       //ctx.record.set(valuetag);
       //console.log(ctx.record);
        //ctx.grid.getStore().sync();
    }
});

Сначала я получаю идентификатор выбранных combobox значений и устанавливаюотправить его на сервер, а затем я пытаюсь получить идентификатор выбранных значений tagfields, чтобы отправить их на сервер, но я не понимаю, как это правильно.Как сделать так, чтобы идентификатор выбранных значений с tagfield шел на сервер.Благодаря.

1 Ответ

0 голосов
/ 25 февраля 2019

Поскольку установка displayField для тегового поля в «name» предотвращает получение массива идентификаторов выбранных записей, другой способ добиться этого - использовать метод getValueRecords в теговом поле.Мы можем передать результат этого метода в функцию карты Array и собрать только идентификаторы:

var tagfieldSeletedIds = Ext.Array.map(tagfield.getValueRecords(), function(record) {
    return record.getId()
});
...