获取和发送id标签域值。 Extjs

时间:2019-02-25 09:04:08

标签: javascript extjs extjs6

网格中有两个字段:

...
{
                    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值的ID并将其设置为发送到服务器,然后尝试获得选定的tagfields值的ID以发送它们到服务器,但是我做错了。 如何使用tagfield使所选值的ID进入服务器。 谢谢。

1 个答案:

答案 0 :(得分:2)

由于将标记字段的displayField设置为“名称”会阻止获取所选记录ID的数组,因此另一种实现方法是使用标记字段的getValueRecords方法。我们可以将此方法的结果传递给Array's map function并仅收集ID:

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