首页 > 解决方案 > 获取和发送 id 标签字段值。extjs

问题描述

网格中有两个字段:

...
{
                    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发送到服务器,但是我没有弄对。如何让选中值的id跟tagfield去服务器。谢谢。

标签: javascriptextjsextjs6

解决方案


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

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

推荐阅读