如何从multiselector组件读取值

时间:2018-03-22 16:02:24

标签: javascript extjs extjs6.5

我正在尝试使用EXTJS 6.5.2中的multiselector

这是我用来创建具有我需要的值的多重选择器的代码

{
    xtype: 'multiselector',
    title: 'I caktohet:',

    name: 'Caktohen[]',
    bind: '{userfullname.value}',

    fieldName: 'userfullname',

    viewConfig: {
        deferEmptyText: false,
        emptyText: 'Askush i zgjedhur'
    },

    search: {
        field: 'userfullname',
        model: 'InTenders.model.UserModel',
        store: {
            type: 'users',
            sorters: 'userfullname',
            // proxy: {
            //     type: 'rest',
            //     limitParam: null,
            //     url: 'api/User'
            // }
        }
    }
}

当我调用form = win.down('form')条记录时,我可以获取除multiselector值以外的所有值,它们在控制台上显示为this

任何人都可以帮助我或指导我如何获得价值观?

谢谢。

//我正在尝试获取多选项并保存它们的代码

saveTenderForm: function (button, e, eOpts) {
        var userMultiSelector = Ext.getCmp('AssignedUsers'); //save assigned users
        var selectedUsers = userMultiSelector.getStore().getData(); //get store and put them in array


        var me = this,
            win = button.up('window'),
            form = win.down('form'),
            // formApplyUpload = this.getFormApplyUpload(),
            // var ko = win.items.items[0].items.items[0].value; 
            recordtenderUsers = Ext.create('InTenders.model.TenderSaveModel');
            // recordtenderUsers = form.getRecord();
            // record = form.getRecord(),
            values = form.getValues();
            // appFile = this.getApplicationFile(),
            // callbacks;
            recordtenderUsers.set(values);
            recordtenderUsers.set('tenderUsers',selectedUsers.items);


        // // me.showMask();
        // if (form.isValid()) {

            recordtenderUsers.save({
                success: function (recordtenderUsers, operation) {
                    win.close();
                    me.hideMask();
                },
                failure: function (recordtenderUsers, operation) {
                    me.hideMask();
                }
            });

1 个答案:

答案 0 :(得分:0)

您可以使用multiselector.down('grid')获取价值,这会返回gridgrid有方法getSelection()

FIDDLE 中,我创建了一个演示版。我希望这有助于/指导您实现您的要求。

CODE SNIPPET

Ext.application({
    name: 'Fiddle',

    launch: function () {
        Ext.create({
            xtype: 'form',
            renderTo: Ext.getBody(),
            items: [{
                xtype: 'multiselector',
                title: 'Multi selector example',
                fieldName: 'text',
                viewConfig: {
                    deferEmptyText: false,
                    emptyText: 'No value selected'
                },

                search: {
                    field: 'text',
                    store: {
                        fields: [{
                            name: 'text',
                            type: 'string'
                        }],
                        data: [{
                            text: 'ABC'
                        }, {
                            text: 'ABC 1'
                        }, {
                            text: 'ABC 2 '
                        }, {
                            text: 'ABC 3'
                        }, {
                            text: 'ABC 4'
                        }]
                    }
                }
            }, {
                xtype: 'button',
                text: 'Get Value',
                margin:15,
                handler: function (btn) {
                    var multiselector = btn.up('form').down('multiselector');
                    if (multiselector.down('grid')) {
                        multiselector.down('grid').getSelection().forEach(rec => {
                            console.log(rec.get('text'));
                        });
                    }
                }
            }]
        });
    }
});