extjs 如何获取combox下拉框中选中的值

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了extjs 如何获取combox下拉框中选中的值相关的知识,希望对你有一定的参考价值。

参考技术A var securityTypeIDValue = Ext.getCmp('securityTypeCombo').getValue();
// 获取显示值
var securityTypeDisValue = Ext.getCmp('securityTypeCombo').getRawValue(); 
// Combox定义
/***************************Combox start*******************************/
var securityTypeRecord=[   
                    name : 'SAVE_VALUE',type : 'string',   
                    name : 'DISPLAY_VALUE',type : 'string'
            ];     
var securityTypeRecordHeads = Ext.data.Record.create(securityTypeRecord); 
var securityTypeDatastore = new Ext.data.Store(    
    proxy:new Ext.data.HttpProxy(new Ext.data.Connection(timeout:0,url:'/customize/control/getZhengShangsecurityType')),   
    reader : new Ext.data.JsonReader(    
        root : 'root'
    , securityTypeRecordHeads),   
    remoteSort : false  
);   
securityTypeDatastore.load();
var securityTypeCombo = new Ext.form.ComboBox(
id:'securityTypeCombo',
width:110,
forceSelection : true,   
selectOnFocus: true,   
triggerAction: 'all',   
mode: 'local',   
store: securityTypeDatastore,   
allowBlank: true,   
valueField : 'SAVE_VALUE',   
displayField : 'DISPLAY_VALUE',
emptyText:'---请选择---'
);
/***************************Combox  end *******************************/

参考技术B 就是getValue()方法啊,跟其它field一样,如果要选中就读,就听select事件就行了本回答被提问者和网友采纳

Extjs 组合框显示具有从数据存储 rest/jsp 请求中获取的值的记录

【中文标题】Extjs 组合框显示具有从数据存储 rest/jsp 请求中获取的值的记录【英文标题】:Extjs combobox to display records with value fetched from data store rest/jsp request 【发布时间】:2021-06-22 16:43:29 【问题描述】:

ExtJs (4.2) 版本,想知道如何从组合框下拉列表中过滤空记录。

代码使用 Extjs store 从 jsp 中获取数据,结果是一个 json 对象。下面说是渲染的结果,

 "data" : [
     "source":"system1","key1" : "value system1", "key2" : " value for system1",
     "source":"system2","key1" : "value 11", "key2" : " value for key1, value 12",
     "source":"system3" ,   //Blank or empty key1, key2 record.
    ....

带有 ExtJs 的 Js 代码

I am using ExtJs to display a combobox (Dropdown) below is the code fragment

      var dataStore = Ext.create('Ext.data.Store', 
            autoLoad: true,
            fields: ['key1', 'key2'],
            proxy:
            
                type: 'ajax',
                url: '<url to a jsp file which retruns json data>',
                reader:
                
                    type: 'json',
                    root: 'templates'
                
            
        );
        
...

    var screenPanel = 
                xtype: 'fieldset',
                title: 'Panel - Data',
                margin: '0 10 15 15',
                padding: 10,
                flex: 1,
                width:"100%",
                layout: 'anchor',
                defaults: 
                    labelWidth: 160,
                ,
                items: [
                
                        xtype: 'checkbox',
                        name: 'visibility',
                        id: 'visibility',
                        fieldLabel : 'Check to enable', 
                        value:false                                 
                    ,
                    
                        xtype: 'combobox',
                        anchor: '80%',
                        name: 'combodropdown',
                        itemId: 'combo1',
                        fieldLabel: 'Dropdown selection',
                        displayField: 'key2',
                        valueField: 'key1',
                        store: dataStore,
                    ,
                        xtype: 'container',
                        anchor: '80%',
....    

组合框下拉列表也列出了空记录。有没有办法过滤该值。在上述情况下,"source" : "system3" 没有 key1 和 key2 值,但 xtype:combo (name: combodropdown) 也列出了一个空白项。

有没有使用事件过滤空数据的示例。像 onClick 事件一样过滤如下数据

....
                      
                        xtype: 'combobox',
                        anchor: '80%',
                        name: 'combodropdown',
                        itemId: 'combo1',
                        fieldLabel: 'Dropdown selection',
                        displayField: 'key2',
                        valueField: 'key1',
                        store: dataStore,
                        
                        //some thing like this
                        onClick: function(value1,value2)
                            alert('clicked combox dropdown')
                            //data store value empty return something
                        

【问题讨论】:

【参考方案1】:

您可以使用商店filter。比如:

Ext.application(
    name: 'Fiddle',

    launch: function () 
        var dataStore = Ext.create('Ext.data.Store', 
            autoLoad: true,
            fields: ['key1', 'key2'],
            proxy: 
                type: 'ajax',
                url: 'comboData.json',
                reader: 
                    type: 'json',
                    root: 'data'
                
            ,
            filters: [
                function (item) 
                    return !Ext.isEmpty(item.get('key1')) && !Ext.isEmpty(item.get('key2'));
                
            ]
        );

        Ext.create('Ext.form.Panel', 
            title: "Sample Panel",
            items: [
                xtype: 'combobox',
                name: 'combodropdown',
                itemId: 'combo1',
                fieldLabel: 'Dropdown selection',
                displayField: 'key2',
                valueField: 'key1',
                store: dataStore,
                listeners: 
                    expand: function(comboBox) 
                        console.log(comboBox.getStore().getRange());
                    
                
            ],
            renderTo: Ext.getBody()
        )
    
);

【讨论】:

以上是关于extjs 如何获取combox下拉框中选中的值的主要内容,如果未能解决你的问题,请参考以下文章

extjs 怎么获取下拉框中选中值所对应的ID?

如何获取c#中combox选定的值

c#combox控件,如何获取上一次选中的值

c#里面ComBox下拉框里面比较里面是不是有这个值

c#combox控件,如何获取上一次选中的值

c#里面,ComBox下拉框比较里面,是不是有这个值?