Extjs讓combobox寫(xiě)起來(lái)簡(jiǎn)潔又漂亮
也已經(jīng)寫(xiě)了很久時(shí)間的extjs ,每次都用到很多的combobox,配置很多東西覺(jué)得實(shí)在是太麻煩,所以根據(jù)常用到的情況寫(xiě)了一個(gè)簡(jiǎn)便的combobox,再次記錄下來(lái),以免放在某個(gè)地方忘記了找不到了。
定義一個(gè)基本的baseCombobox類(lèi),如下。
Ext.define('Admin.view.baseCmp.BaseCombobox', { extend: 'Ext.form.field.ComboBox', xtype: 'baseCombobox', editable: false, labelSeparator: ':', labelWdith: 0, triggerAction: 'all', labelAlign: 'right', //forceSelection: true,此屬性操作時(shí),就算去掉文字后,失去焦點(diǎn)后還是會(huì)選擇上一次選擇的記錄 autoSelect: true, selectOnfocus: true, valueNotFoundText: '', name:'', queryMode: 'local', url:'', displayField: '', valueField: '', requires:['Admin.view.baseCmp.BaseComboboxController'], controller: 'baseComboboxController', emptyIndex:-1,//自定義屬性,空值所在下標(biāo),-1則不添加 selectIndex:0,//自定義屬性,自動(dòng)選擇下標(biāo) params:null,//自定義屬性,數(shù)據(jù)參數(shù) listeners: { render: 'getComboData', scope: 'controller' }, });
Ext.define('Admin.view.baseCmp.BaseComboboxController', { extend: 'Ext.app.ViewController', alias: 'controller.baseComboboxController', getComboData: function (combo) { Ext.Ajax.request({ url: combo.url, method :'POST', params:combo.params, success: function (response) { var dataJson = Ext.decode(response.responseText); if(dataJson.state != 200 || dataJson.data == null || dataJson.data.length == 0) { //服務(wù)器返回錯(cuò)誤 return ; } var data = dataJson.data; //插入“全部”選項(xiàng) if(combo.emptyIndex >= 0) { var emp = {}; emp[combo.displayField] = "全部"; emp[combo.valueField] = "全部"; Ext.Array.insert(data,combo.emptyIndex,[emp]); } var store = Ext.create('Ext.data.Store', { fields: Ext.Object.getKeys(data[0]), data: data }); combo.setStore(store); //如果指定選中某個(gè)值 if(combo.selectValue != null) { combo.select(combo.selectValue); } else { //如果指定選中某個(gè)下標(biāo)的值,-1為最后一個(gè),> 0 則為第selectIndex個(gè) if(combo.selectIndex == -1) { console.log(data.length - 1); combo.select(data[data.length - 1][combo.valueField]); } else { combo.select(data[combo.selectIndex][combo.valueField]); } } //觸發(fā)選中事件 //combo.fireEvent('select', combo,store.getAt(combo.selectIndex)); }, failure: function (response) { //請(qǐng)求服務(wù)器失敗 } }); } });
調(diào)用實(shí)例:
{ xtype: 'baseCombobox', name: "typeName", fieldLabel: "類(lèi)型", displayField: 'typeName', valueField: 'id', emptyIndex:0, multiSelect:false, url:"/itemType/list", listeners:{ select:'query' } },
這樣大大方便了我使用combobox,如果某種類(lèi)型的combobox需要重復(fù)使用,建議還是直接定義好他,到需要用的時(shí)候一句:
xtype: 'itemTypeCombobox',就可以搞定了,代碼看起來(lái)簡(jiǎn)潔又漂亮。
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- Extjs4.0 ComboBox如何實(shí)現(xiàn)三級(jí)聯(lián)動(dòng)
- ExtJS4給Combobox設(shè)置列表中的默認(rèn)值示例
- Extjs中ComboBoxTree實(shí)現(xiàn)的下拉框樹(shù)效果(自寫(xiě))
- extjs3 combobox取value和text案例詳解
- Extjs中ComboBox加載并賦初值的實(shí)現(xiàn)方法
- Extjs EditorGridPanel中ComboBox列的顯示問(wèn)題
- extjs中g(shù)rid中嵌入動(dòng)態(tài)combobox的應(yīng)用
- ExtJS PropertyGrid中使用Combobox選擇值問(wèn)題
- ExtJs使用總結(jié)(非常詳細(xì))
- ExtJS 學(xué)習(xí)專(zhuān)題(一) 如何應(yīng)用ExtJS(附實(shí)例)
相關(guān)文章
ExtJS 2.0實(shí)用簡(jiǎn)明教程之應(yīng)用ExtJS
應(yīng)用extjs需要在頁(yè)面中引入extjs的樣式及extjs庫(kù)文件2009-04-04Extjs4.0設(shè)置Ext.data.Store傳參的請(qǐng)求方式(默認(rèn)為GET)
本教程將詳細(xì)介紹下設(shè)置Ext.data.Store傳參的請(qǐng)求方式;亮點(diǎn),設(shè)置請(qǐng)求方式,默認(rèn)為GET,感興趣的朋友可以參考下哈2013-04-04Extjs在exlipse中設(shè)置自動(dòng)提示的方法
spket最好用了,而且它還支持ext,安裝起來(lái)很簡(jiǎn)單.....2010-04-04ExtJS TabPanel beforeremove beforeclose使用說(shuō)明
ExtJS 關(guān)閉TabPanel內(nèi)的Panel時(shí)使用TabPanel的'beforeremove’和其內(nèi)的Panel的'beforeclose’事件彈出關(guān)閉確認(rèn)提示對(duì)話(huà)框2010-03-03Extjs TimeField 顯示正常時(shí)間格式的代碼
由后臺(tái)返回的json的日期時(shí)間格式中,往往都是 類(lèi)似 "\/Date(1309200300000)\/"的日期時(shí)間格式,結(jié)果導(dǎo)致無(wú)法正常在TimeField中顯示2011-06-06extjs 3.31 TreeGrid實(shí)現(xiàn)靜態(tài)頁(yè)面加載json到TreeGrid里面
extjs 3.31 TreeGrid 我的小改動(dòng),實(shí)現(xiàn)靜態(tài)頁(yè)面加載json到TreeGrid里面2013-04-04extJs 文本框后面加上說(shuō)明文字+下拉列表選中值后觸發(fā)事件
在用extjs做參數(shù)設(shè)置的時(shí)候,想在文本框后加入說(shuō)明子,在網(wǎng)站上走了一大圈還是沒(méi)能找到合適的,小花用了一個(gè)下午的上班時(shí)間終于將這個(gè)頁(yè)面與我想要的功能做出,頁(yè)面很好看與自然,希望網(wǎng)友在用extjs做項(xiàng)目的時(shí)候用的著.2009-11-11