在做下拉窗时应注意的是:
1、在显示页面:
- {
- header:'上级',
- dataIndex:'superiorsId',
- editor : personComboBox,
- renderer:function(v) {
- var index = personComboBox.store.find('id',v);
- return personComboBox.store.getAt(index).get('realName');
- }
personComboBox代码为:
- Ext.namespace('Xietong.person');
- Xietong.person.PersonStore = Ext.extend(Ext.data.Store, {
- proxy: new Ext.data.HttpProxy({
- url:'mocule/common/listUser.do'
- }),
- reader:new Ext.data.JsonReader({
- root:'root',
- totalProperty:'totalCount'
- },[
- {name : 'id'},
- {name : 'userName'},
- {name : 'password'},
- {name : 'realName'},
- {name : 'mobile'},
- {name : 'gender'},
- {name : 'birthday',type : 'date',dateFormat:'Y-m-d'},
- {name : 'school'},
- {name : 'specialty'},
- {name : 'departmentId'},
- {name : 'departmentName'},
- {name : 'superiorsId'},
- {name : 'superiorsName'}
- ])
- });
- Xietong.person.PersonComboBox = Ext.extend(Ext.form.ComboBox, {
- fieldLabel:'上级',
- name:'superiorsId',
- hiddenName:'superiorsId',
- anchor:'90%',
- store: new Xietong.person.PersonStore(),
- valueField:'id',
- displayField:'realName',
- triggerAction : 'all',
- mode:'local',
- editable: false,
- triggerAction: 'all',
- allowBlank:false,
- emptyText :'--请选择--'
- });
listUser代码为:
- public ActionForward list(ActionMapping mapping, ActionForm form,HttpServletRequest request, HttpServletResponse response)
- throws Exception {
- List<Department> list = departmentService.list();
- StringBuffer buf = new StringBuffer("");
- for (int i = 0; i < list.size(); i++) {
- Department department = list.get(i);
- if(i != 0) buf.append(",");
- buf.append("[")
- .append(department.getId())
- .append(",'")
- .append(department.getDepartmentName())
- .append("','")
- .append(department.getDepartmentDesc()).append("']");
- }
- String str = "[" + buf.toString() + "]";
- response.setCharacterEncoding("UTF-8");
- response.getWriter().print(str);
- return null;
- }
2、要注意的是,这是数据库中的没有空值,要不然index会有负值。
3、其中Ext.Store 有属性有:
store是一个为Ext器件提供record对象的存储容器,行为和属性都很象数据表 方法:不列举继承来的方法 Store( Object config ) 构造,config定义为{ autoLoad : Boolean/Object, //自动载入 baseParams : Object, //只有使用httpproxy时才有意义 data : Array, //数据 proxy : Ext.data.DataProxy,//数据代理 pruneModifiedRecords : boolean,//清除修改信息 reader : Ext.data.Reader, //数据读取器 remoteSort : boolean, //远程排序? sortInfo : Object, //{field: "fieldName", direction: "ASC|DESC"}这样的排序对象 url : String, //利用url构造HttpProxy } add( Ext.data.Record[] records ) : void 增加记录records 到store addSorted( Ext.data.Record record ) : void 增加record到store并排序(仅本地排序时有用) clearFilter( Boolean suppressEvent ) : void 清除过滤器 collect( String dataIndex, [Boolean allowNull], [Boolean bypassFilter] ) : Array 收集由dataIndex指定字段的惟一值 commitChanges() : void 提交Store所有的变更,会引发Update事件 filter( String field, String/RegExp value, [Boolean anyMatch], [Boolean caseSensitive] ) : void 设定过滤器 field:String //字段名 value:String //RegExp 如果是字符器,检查field是否以value开始,如果是正则,检查是否匹配 anyMatch:Boolean //匹配任何部分而不仅令是开始 caseSensitive:Boolean //大小写敏感? filterBy( Function fn, [Object scope] ) : void 更强悍的过滤方法.fn接收两个参数record和id find( String property, String/RegExp value, [Number startIndex], [Boolean anyMatch], [Boolean caseSensitive] ) : Number 找到符合条件的第一条记录,参数同filter findBy( Function fn, [Object scope], [Number startIndex] ) : Number 参见filterBy getAt( Number index ) : Ext.data.Record getById( String id ) : Ext.data.Record 依充号/id得到record对象 getCount() : void 得到记录数 getModifiedRecords() : Ext.data.Record[] 得到修改过的记录集 getRange( [Number startIndex], [Number endIndex] ) : Ext.data.Record[] 得到指定范围的记录集合 getSortState() : void 得到排序状态:显然不是void而是返回一个排序对象,同sortInfo一样的结构{field: "fieldName", direction: "ASC|DESC"} getTotalCount() : void 这个对于翻页信息还是很有用的 indexOf( Ext.data.Record record ) : Number indexOfId( String id ) : Number 由记录或id得到序号 insert( Number index, Ext.data.Record[] records ) : void 在指定的位置插入记录,并引发add事件 isFiltered() : Boolean 当前设置了过滤器则返回真 load( Object options ) : void 由指定的Proxy使用指定的reader读取远程数据 options定义为 { params :Object, //请求url需要附加的参数 callback :Function//回叫方法,接收三个参数 //r : Ext.data.Record[] //返回的record数组 //options: Options load方法传入的options //success: Boolean //成功 scope :Object, //范围.默认是store本身 add :Boolean 追加还是更新 } loadData( Object data, [Boolean append] ) : void 用法比load简单一点,目的是一样的,只是这次数据由本地读取 query( String field, String/RegExp value, [Boolean anyMatch], [Boolean caseSensitive] ) : MixedCollection queryBy( Function fn, [Object scope] ) : MixedCollection 查询,参数和find类似,但返回所有符合条件的record,而不是第一个符合条件记录的序号 rejectChanges() : void 放弃所有的变更 reload( [Object options] ) : void 重新载入,相当于 load(options,false),如果连options都没有传入,则取最后一次load时使用的参数 remove( Ext.data.Record record ) : void 移除指定记录 removeAll() : void 移除所有记录 setDefaultSort( String fieldName, [String dir] ) : void 设置默认排序规则 sort( String fieldName, [String dir] ) : void 排序 sum( String property, Number start, Number end ) : Number 对property字段由start开始到end求和 事件列表 add : ( Store this, Ext.data.Record[] records, Number index ) beforeload : ( Store this, Object options ) clear : ( Store this ) datachanged : ( Store this ) load : ( Store this, Ext.data.Record[] records, Object options ) loadexception : () metachange : ( Store this, Object meta ) remove : ( Store this, Ext.data.Record record, Number index ) update : ( Store this, Ext.data.Record record, String operation ) 看名字都很简单,参数也不复杂,略过
问题:
回复:怎么获取Stroe中的某一个选项的值?? 用 store.find(field,value) 通过一个字段的名和其对应的值,获取store中的一个record的索引 ,假如将之给变量index
store.getAt(index)来获取该Record 给变量record
record.get(otherField) 取得otherField所对应的值
以上来源于《 》
4、可以用“ alert();”来进行调试。