一 Extjs中的插件ItemSelector,使用中的注意事项
使用中需要引用3个文件,MultiSelect.js ,ItemSelector.js,MultiSelect.css
二、参考官方示例程序,中文表现为乱码,需要将以上文件,另存为utf-8格式
三、官方示例程序程序中,如果不做修改,只能获取displayText
四、如果采用json从后台获取,不能自定义displayField和valueField属性,否则在接受框没有选择的值出现.
因笔者通过SQL语句以value text方式,发现数据库不允许这样操作,提示为系统保留字符存在,例如以下语句:
select sId as value,Stext as text from xxx
为此,对该插件,笔者修改一下几个地方,可以完善:
1:修改MultiSelect.js插件,将使用value 和text位置,变更为_value _text,主要是以下位置
2: 为获取选择框的value值,需要修改ItemSelector的setValue()函数,笔者代码参考以下网址:
http://abgne.tw/ext-js/ext-js-tips/itemselector-setvalue-item.html
3:具体使用方法举例如下:(这里直接是应用官方示例程序,没有使用json从后台获取数据,同时也没有修订value 及text为_value _text
运行结果如下
可以获取value值,而非displayText
使用中需要引用3个文件,MultiSelect.js ,ItemSelector.js,MultiSelect.css
二、参考官方示例程序,中文表现为乱码,需要将以上文件,另存为utf-8格式
三、官方示例程序程序中,如果不做修改,只能获取displayText
四、如果采用json从后台获取,不能自定义displayField和valueField属性,否则在接受框没有选择的值出现.
因笔者通过SQL语句以value text方式,发现数据库不允许这样操作,提示为系统保留字符存在,例如以下语句:
select sId as value,Stext as text from xxx
为此,对该插件,笔者修改一下几个地方,可以完善:
1:修改MultiSelect.js插件,将使用value 和text位置,变更为_value _text,主要是以下位置
if(Ext.isArray(this.store)){ if (Ext.isArray(this.store[0])){ this.store = new Ext.data.ArrayStore({ fields: ['_value','_text'], data: this.store }); this.valueField = '_value'; }else{ this.store = new Ext.data.ArrayStore({ fields: ['_text'], data: this.store, expandData: true }); this.valueField = '_text'; } this.displayField = '_text'; } else { this.store = Ext.StoreMgr.lookup(this.store); } //后台返回的字段为_value 和_text,例如: //select sID as _value,Stext as _text from XXX等语句 //采用json获取数据代码可参考一下方式: var DSformstore=new Ext.data.Store({ baseParams:{classid:classid}, //带有参数 autoLoad:true, autoDestroy:true, proxy:new Ext.data.HttpProxy({ method:'GET', url:'GetPowerList.asp?Action=GetGParray&' }), reader:new Ext.data.JsonReader({ },['_value','_text']) }); //接受框store ,定义如下: var storeTo = new Ext.data.ArrayStore({ fields: ['_value', '_text'] });
2: 为获取选择框的value值,需要修改ItemSelector的setValue()函数,笔者代码参考以下网址:
http://abgne.tw/ext-js/ext-js-tips/itemselector-setvalue-item.html
Ext.override(Ext.ux.form.ItemSelector, { setValue: function(values) { var index; var selectionsArray = []; this.toMultiselect.view.clearSelections(); this.hiddenField.dom.value = ''; if (!values || (values == '')) { return; } if (!Ext.isArray(values)) { values = values.split(this.delimiter); } for (var i=0; i<values.length; i++) { index = this.fromMultiselect.view.store.indexOf(this.fromMultiselect.view.store.query(this.fromMultiselect.valueField, new RegExp('^' + values[i].trim() + '$', "i")).itemAt(0)); if (index > -1) { selectionsArray.push(index); } } var records = [], record; if (selectionsArray.length > 0) { for (var i=0; i<selectionsArray.length; i++) { var record = this.fromMultiselect.view.store.getAt(selectionsArray[i]); records.push(record); } if(!this.allowDup)selectionsArray = []; for (var i=0; i<records.length; i++) { record = records[i]; if(this.allowDup){ var x=new Ext.data.Record(); record.id=x.id; delete x; this.toMultiselect.view.store.add(record); }else{ this.fromMultiselect.view.store.remove(record); this.toMultiselect.view.store.add(record); selectionsArray.push((this.toMultiselect.view.store.getCount() - 1)); } } } this.toMultiselect.view.refresh(); this.fromMultiselect.view.refresh(); var si = this.toMultiselect.store.sortInfo; if(si){ this.toMultiselect.store.sort(si.field, si.direction); } this.toMultiselect.view.select(selectionsArray); } });
3:具体使用方法举例如下:(这里直接是应用官方示例程序,没有使用json从后台获取数据,同时也没有修订value 及text为_value _text
var dsform = new Ext.data.ArrayStore({ data: [[123,'One Hundred Twenty Three'], ['1', 'One'], ['2', 'Two'], ['3', 'Three'], ['4', 'Four'], ['5', 'Five'], ['6', 'Six'], ['7', 'Seven'], ['8', 'Eight'], ['9', 'Nine']], fields: ['value','text'], sortInfo: { field: 'value', direction: 'ASC' } }); var dsto = new Ext.data.ArrayStore({ fields: ['value', 'text'] }); var isForm = new Ext.form.FormPanel({ title: 'ItemSelector Test', width:700, bodyStyle: 'padding:10px;', renderTo: 'itemselector', items:[{ xtype: 'itemselector', name: 'itemselector', fieldLabel: 'ItemSelector', imagePath: '../ux/images/', multiselects: [{ width: 180, height: 200, store: dsform , displayField: 'text', valueField: 'value' },{ width: 150, height: 200, store: dsto, displayField: 'text', valueField: 'value', tbar:[{ text: '清除选择项目', handler:function(){ isForm.getForm().findField('itemselector').reset(); } }] }] }], buttons: [{ text: 'Save', handler: function(){ if(isForm.getForm().isValid()){ Ext.Msg.alert('Submitted Values', 'The following will be sent to the server: <br />'+ isForm.getForm().getValues(true)); } } }] });
运行结果如下
可以获取value值,而非displayText
发表评论
-
itemselector-multiselect的数据过滤
2010-12-16 23:07 1866纠结了半天,重写不了方法,只好改源码了。 itemselect ... -
ExtJS DeskTop组件的学习
2010-12-12 23:02 2423网上千篇一律的 sample.js的代码解释。 //菜单里 ... -
[转载]Ext Ajax:如何调用Ext.Ajax.request方法和使用Java Servlet进行处理
2010-12-12 23:00 1305使用Ext.Ajax.request提交数据的代码如下(这段代 ... -
[转载]ExtJS中tabPanel的实现详解
2010-12-12 22:59 1788在做这项目有快一年了,有些体会想和大家分享分享,所以决定利用这 ... -
[转载]Ext中TreePanel控件和TabPanel控件搭配测试
2010-12-12 22:58 1017在实际的项目中,左边树形菜单,提供各种功能点击,右边一个面板, ... -
[转载]EXT核心API详解Ext.widgets(二十)-grid(2)
2010-12-12 22:57 1097Ext.grid.EditorGridPanel 可编辑数据表 ... -
[转载]EXT核心API详解Ext.widgets(十九)-grid(1)
2010-12-12 22:56 859Ext.grid.ColumnModel 用于定义Grid的列 ... -
[转载]EXT核心API详解Ext.Toolbar(十八)
2010-12-12 22:55 1381构造 add( Mixed arg1, Mixed arg2 ... -
[转载]EXT核心API详解Ext.menu.Menu(十七)
2010-12-12 22:55 1220Ext.menu.Menu 菜单对象 config{ ... -
[转载]EXT核心API详解Ext.widgets(十六)-form(下)
2010-12-12 22:54 908Ext.form.NumberField 继承自E ... -
[转载]EXT核心API详解Ext.widgets(十五)-form(上)
2010-12-12 22:54 871Ext.form.BasicForm 对应一个dom中的for ... -
[转载]EXT核心API详解Ext.widgets(十四)-Button,SplitButton,CycleButton
2010-12-12 22:53 889Ext.Action action实现一个脱离了容 器的事件, ... -
[转载]EXT核心API详解Ext.data(十三)-Tree/Node
2010-12-12 22:51 954Ext.data.Tree 继承自Observab ... -
[转载]EXT核心API详解Ext.data(十二)-GroupingStore/JsonStore/SimpleStore javascript
2010-12-12 22:51 827Ext.data.GroupingStore 继承自Ext.d ... -
[转载]EXT核心API详解Ext.data(十一)-Store
2010-12-12 22:50 728Ext.data.Store store是一个为Ext器件提 ... -
[转载]EXT核心API详解Ext.data(十)-DataReader/ArrayReader/JsonReader/XmlReader javascript
2010-12-12 22:49 874Ext.data.DataReader 纯虚类,从数据源得到 ... -
EXT核心API详解(九)-Ext.data-DataProxy/HttpProxy/MemoryProxy/ScriptTagProxy javascript
2010-12-12 22:48 1204Ext.data.DataProxy 数据代理类是一个纯虚类 ... -
[转载]EXT核心API详解(八)-Ext.dat-Connection/Ajax/Record javascript
2010-12-12 22:46 726Ext.data.Connection 访问指 ... -
[转载]EXT核心API详解(七)-Ext.KeyNav/KeyMap/JSON/Format/DelayedTask/TaskRunner/TextMetri
2010-12-12 22:46 752Ext.KeyNav Ext的keyNav类能为Ext.El ... -
[转载]EXT核心API详解(六)Ext.Fx
2010-12-12 22:45 721Ext.Fx类 对于我这样的 ...
相关推荐
ExtJS 4.2 的 `itemselector` 是一个强大的组件,用于在两个独立的数据源之间进行选择项的双向同步。这个组件通常用于实现用户界面中的双列表选择功能,例如在创建一对多或一对一关系时,让用户能从两边的列表中分别...
在"extJS3.1源码及demo"这个资源中,你将找到ExtJS 3.1.0的完整源代码和相关的示例。源码的分析对于深入理解框架的工作原理至关重要,特别是对于那些想要进行定制化开发或者优化性能的开发者来说。源码包含了各种...
3. **ItemSelector(项目选择器)**:ItemSelector是ExtJS中的一个组件,用于在两个列表之间移动项目。TreeSelector则是对这个组件进行了扩展,使其能处理树形数据。 4. **Data Binding(数据绑定)**:...
在ExtJS 4.x框架中,ComboboxTree是一种特殊的组件,它将传统的下拉框与树形结构结合在一起,提供了一种更为灵活的用户输入方式。这种组件在数据选择上非常实用,尤其当数据层级关系复杂时,可以方便地进行多选或...
模仿Ext4实现ItemSelector,在Rally App开发中虽然是Ext4,但ux包下面的对象被阉割了 所以手动实现了一个,布局和组件化方面还有待改进。
在本教程中,我们将基于 ExtJS 4.0 版本,创建一个自己的动态 WEB 桌面,可以像 webQQ 那样添加应用,打开应用。 桌面图标自动换行 在桌面上,图标的排列方式非常重要。我们可以使用 ExtJS 4.0 的 layout manager ...
本文档将详细介绍如何在ExtJS框架中实现桌面图标的自动换行功能。在许多应用中,特别是在模仿桌面环境的应用程序中,桌面图标(通常称为快捷方式)的布局至关重要。当屏幕空间不足以容纳所有的图标时,自动换行功能...
在实际应用中,开发人员需要将`MultiselectItemSelector` 集成到他们的ExtJs应用程序中,这通常涉及到以下步骤: 1. 引入所需的CSS和JavaScript文件。 2. 在ExtJs的配置对象中定义MultiselectItemSelector组件,设置...
在EXTJS这个强大的JavaScript框架中,事件处理和模板机制是两个至关重要的概念,它们极大地提升了开发者构建用户界面的效率和代码的可维护性。本文将深入探讨EXTJS中的事件系统和模板机制,以及如何在实际开发中应用...
在IT领域,特别是Web开发中,Struts2与ExtJS的结合是一种常见且高效的技术搭配。Struts2作为后端框架,负责业务逻辑处理及数据交互;而ExtJS作为前端框架,专注于用户界面的构建与优化。两者结合,能够实现前后端...
其中,Icon Combobox是ExtJS中的一个特色组件,将图标与下拉列表结合,提升了用户界面的美观度和交互性。本文将深入探讨Icon Combobox的实现原理、功能特性以及如何自定义修改图片大小。 **Icon Combobox的定义** ...
itemSelector: 'div' }); var panel = new Ext.Panel({ title: 'EXT2.0分页示例', items: [view, pagingToolbar] }); panel.render(document.body); // 渲染到页面 ``` 4. 在后端,你需要提供一个能支持...
- **ItemSelector**: CSS选择器,用于定位列表中的项目,常用于自定义样式和行为。 - **PageSize**: 定义下拉列表一次显示的条目数量,对性能和用户友好性有直接影响。 综上所述,ExtNet控件提供了丰富的配置选项...
itemSelector: 'div.x-boundlist-item', getInnerTpl: function() { return '{name}'; } }, listeners: { checkchange: function(field, record, checked) { // 更新选择的值 } } }); ``` 6. **注意...