也已经写了很久时间的extjs ,每次都用到很多的combobox,配置很多东西觉得实在是太麻烦,所以根据常用到的情况写了一个简便的combobox,再次记录下来,以免放在某个地方忘记了找不到了。

定义一个基本的baseCombobox类,如下。
Ext.define('Admin.view.baseCmp.BaseCombobox', {
extend: 'Ext.form.field.ComboBox',
xtype: 'baseCombobox',
editable: false,
labelSeparator: ':',
labelWdith: 0,
triggerAction: 'all',
labelAlign: 'right',
//forceSelection: true,此属性操作时,就算去掉文字后,失去焦点后还是会选择上一次选择的记录
autoSelect: true,
selectOnfocus: true,
valueNotFoundText: '',
name:'',
queryMode: 'local',
url:'',
displayField: '',
valueField: '',
requires:['Admin.view.baseCmp.BaseComboboxController'],
controller: 'baseComboboxController',
emptyIndex:-1,//自定义属性,空值所在下标,-1则不添加
selectIndex:0,//自定义属性,自动选择下标
params:null,//自定义属性,数据参数
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)
{
//服务器返回错误
return ;
}
var data = dataJson.data;
//插入“全部”选项
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);
//如果指定选中某个值
if(combo.selectValue != null)
{
combo.select(combo.selectValue);
}
else
{
//如果指定选中某个下标的值,-1为最后一个,> 0 则为第selectIndex个
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]);
}
}
//触发选中事件
//combo.fireEvent('select', combo,store.getAt(combo.selectIndex));
},
failure: function (response) {
//请求服务器失败
}
});
}
});
调用实例:
{
xtype: 'baseCombobox',
name: "typeName",
fieldLabel: "类型",
displayField: 'typeName',
valueField: 'id',
emptyIndex:0,
multiSelect:false,
url:"/itemType/list",
listeners:{
select:'query'
}
},
这样大大方便了我使用combobox,如果某种类型的combobox需要重复使用,建议还是直接定义好他,到需要用的时候一句:
xtype: 'itemTypeCombobox',就可以搞定了,代码看起来简洁又漂亮。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
# Extjs
# combobox
# Extjs4.0 ComboBox如何实现三级联动
# ExtJS4给Combobox设置列表中的默认值示例
# Extjs中ComboBoxTree实现的下拉框树效果(自写)
# extjs3 combobox取value和text案例详解
# Extjs中ComboBox加载并赋初值的实现方法
# Extjs EditorGridPanel中ComboBox列的显示问题
# extjs中grid中嵌入动态combobox的应用
# ExtJS PropertyGrid中使用Combobox选择值问题
# ExtJs使用总结(非常详细)
# ExtJS 学习专题(一) 如何应用ExtJS(附实例)
# 自定义
# 写了
# 放在
# 一句
# 找不到
# 很久
# 每次都
# 则为
# 很多东西
# 需要用
# 大家多多
# 就可以
# 搞定了
# 重复使用
# 便了
# 忘记了
# queryMode
# url
# local
# autoSelect
相关文章:
如何在建站宝盒中设置产品搜索功能?
如何在腾讯云服务器快速搭建个人网站?
视频网站app制作软件,有什么好的视频聊天网站或者软件?
制作假网页,招聘网的薪资待遇,会有靠谱的吗?一面试又各种折扣?
建站之星×万网:智能建站系统+自助建站平台一键生成
黑客如何通过漏洞一步步攻陷网站服务器?
定制建站哪家更专业可靠?推荐榜单揭晓
如何制作新型网站程序文件,新型止水鱼鳞网要拆除吗?
如何在云服务器上快速搭建个人网站?
制作销售网站教学视频,销售网站有哪些?
c# 服务器GC和工作站GC的区别和设置
如何确保西部建站助手FTP传输的安全性?
C#怎么使用委托和事件 C# delegate与event编程方法
大连网站制作费用,大连新青年网站,五年四班里的视频怎样下载啊?
红河网站制作公司,红河事业单位身份证如何上传?
建站之星价格显示格式升级,你的预算足够吗?
开心动漫网站制作软件下载,十分开心动画为何停播?
成都响应式网站开发,dw怎么把手机适应页面变成网页?
义乌企业网站制作公司,请问义乌比较好的批发小商品的网站是什么?
如何在万网自助建站平台快速创建网站?
行程制作网站有哪些,第三方机票电子行程单怎么开?
制作公司内部网站有哪些,内网如何建网站?
网站广告牌制作方法,街上的广告牌,横幅,用PS还是其他软件做的?
如何在阿里云域名上完成建站全流程?
网站按钮制作软件,如何实现网页中按钮的自动点击?
七夕网站制作视频,七夕大促活动怎么报名?
如何选择高效响应式自助建站源码系统?
香港服务器网站生成指南:免费资源整合与高速稳定配置方案
洛阳网站制作公司有哪些,洛阳的招聘网站都有哪些?
韩国代理服务器如何选?解析IP设置技巧与跨境访问优化指南
制作农业网站的软件,比较好的农业网站推荐一下?
常州企业网站制作公司,全国继续教育网怎么登录?
JS中使用new Date(str)创建时间对象不兼容firefox和ie的解决方法(两种)
,怎么用自己头像做动态表情包?
高防网站服务器:DDoS防御与BGP线路的AI智能防护方案
如何在橙子建站中快速调整背景颜色?
济南专业网站制作公司,济南信息工程学校怎么样?
浅谈Javascript中的Label语句
杭州银行网站设计制作流程,杭州银行怎么开通认证方式?
*服务器网站为何频现安全漏洞?
C++时间戳转换成日期时间的步骤和示例代码
建站主机是什么?如何选择适合的建站主机?
保定网站制作方案定制,保定招聘的渠道有哪些?找工作的人一般都去哪里看招聘信息?
,购物网站怎么盈利呢?
C++ static_cast和dynamic_cast区别_C++静态转换与动态类型安全转换
云南网站制作公司有哪些,云南最好的招聘网站是哪个?
手机怎么制作网站教程步骤,手机怎么做自己的网页链接?
如何快速生成ASP一键建站模板并优化安全性?
如何快速搭建自助建站会员专属系统?
如何快速搭建支持数据库操作的智能建站平台?
*请认真填写需求信息,我们会在24小时内与您取得联系。