最近在项目中需要使用到从左边选到右边的那种控件,在window中见过,不知道叫啥名字,后来知道了这种控件叫做ItemSelector控件(效果如下图)。
公司使用的是ext 3.4 ,在api中目前还找不到Itemselector的文档,后来在官方的examples中找到一个,需要利用到ux包中的扩展类来实现。
在这里分享一下给大家。
1.首先需要引入两个js文件、一个css样式表,分别是:
MultiSelect.js、ItemSelector.js、MultiSelect.css
js文件可以在官方包中的examples\ux\form下面找到,css文件在examples\ux\css中找到
1 2 ......3 4 5
2.Ext.ux.form.ItemSelector = Ext.extend(Ext.form.Field, {..)}
ItemSelector其实是继承自field,这样我们就可以将其放入formPanel中:
/*未分配的条目*/ var ds_from = new Ext.data.ArrayStore({ url:'./'+ORD_BARGAINDISTRIBUTE, baseParams:{action:'aviliable',bizId:business_id}, pruneModifiedRecords : true, fields: [{name:'value'},{name:'text'}] }); /*已分配的条目*/ var ds_to = new Ext.data.ArrayStore({ url:'./'+ORD_BARGAINDISTRIBUTE, baseParams:{action:'fenpei',bizId:business_id}, pruneModifiedRecords : true, fields: [{name:'value'},{name:'text'}] }); ds_from.load(); ds_to.load();...... new Ext.form.FormPanel({ region:'center', id:'selector_form', width:350, bodyStyle:'padding:10px', items:[{ xtype:'itemselector', //设置此field类型为field name:'itemselector', hideLabel:true, //隐藏标签 imagePath: './images', //配置方向图标的文件夹位置 multiselects: [{ //待选择框 width: 150, height: 260, legend:'可选条目', store: ds_from, //待选择资源的结果集 displayField: 'text', //显示的字段 valueField: 'value' //值字段 }, { //已选择框 width: 150, height: 260, hideLabel:true, legend:'已选条目', store:ds_to, displayField: 'text', //显示的字段 valueField: 'value', //值字段 tbar:[{ text: '清空', iconCls:'remove', handler:function(b,e){ //用reset重置已选择的项 Ext.getCmp('selector_form').getForm().findField('itemselector').reset(); } }] }] }] })
3.取值。
var select_values = Ext.getCmp('selector_form').getForm().getValues(true); //获取已选择的值
取出来的值会包含空格以及一些无用的文字开头,这时候就需要我们自己处理格式化取出来的值了。
4.感谢阅贴。