首页 > 代码库 > 关于EXT gridPanel进行高级查询时load提交后台乱码以及其他方式更新store的方法及遇到的问题
关于EXT gridPanel进行高级查询时load提交后台乱码以及其他方式更新store的方法及遇到的问题
Ext.data.Store 加载数据的几个方法及注意的事项
下面为定义的Store
var ds_edisCommonUser = new Ext.data.uStore({ storeId:‘edisCommonUser‘, model:‘Edis_CommonUser‘, pageSize:itemPerPage, autoLoad:false, proxy:{ type:‘ajax‘, method:‘POST‘, url:‘EdisCommonUser/getUsers.action‘, reader:{ type:‘json‘, root:‘jsonObj_listUsers‘, totalProperty:‘jsonObj_listUsersCount‘ } }});
需求为:在高级查询完毕后,列表显示查询后的数据。
这里初次做的时候遇到个问题,是如果用load进行数据的重载,传入给action的参数会有乱码,这个是由于store更新数据的方式造成的,默认提交方法为get,需要重新给Store设置提交方式的属性
ds_edisCommonUser.load({ params:{ start:0, limit:15, name:search_name } });
var ds_edisCommonUser = new Ext.data.uStore({ storeId:‘edisCommonUser‘, model:‘Edis_CommonUser‘, pageSize:itemPerPage, autoLoad:false, proxy:{ type:‘ajax‘, method:‘POST‘, url:‘EdisCommonUser/getUsers.action‘, actionMethods:{ read:‘POST‘ }, reader:{ type:‘json‘, root:‘jsonObj_listUsers‘, totalProperty:‘jsonObj_listUsersCount‘ } }}););
关于store更新数据乱码问题到此结束
在初次遇到此乱码问题时,我不知道用load方法的重要性(为何重要要在下面叙述),我采用的方式为Ext.ajax.Request获取数据,并将store更换数据的方式完成数据的高级查询
loadData方法,可以将查询后的数据更新至gridPanel列表中,但是不能更新页码
* 总页数还是之前全部查询的总页数,因此分页查询功能失效。
* 后来在firefox中发现gridPanel中有个TotalCount的属性,该属性为列表
* 的总页数,但是gridPanel中并没有设置此属性的方法,因此我通过
* define一个新的Ext类继承EXT.DATA.STORE的方式,加入了此方法,
* 不过经过试验确实能在debug时,
* 确实能对girdPanel的TotalCount属性进行更改,但是还是无法对页面的
* GridPanel右下角的总数进行更新,所以怀疑是girdPanel没有进行刷新,
* 仅进行数据的刷新,通过资料查找,能刷新girdPanel的仅能是load()方法
1 var test_data =http://www.mamicode.com/ Ext.Ajax.request({ 2 url:‘EdisCommonUser/getUsers.action‘, 3 method:‘POST‘, 4 params:{ 5 name:search_name, 6 start:0, 7 limit:15 8 }, 9 success:function(data){10 var _jsondata =http://www.mamicode.com/ Ext.JSON.decode(data.responseText);11 var _jsonStore = _jsondata.jsonObj_listUsers;12 var _jsonTotalProperty = _jsondata.jsonObj_listUsersCount;13 14 ds_edisCommonUser.load({15 params:{16 17 }18 })19 20 /* 下面为通过loadData的方式21 * loadData方法,可以将查询后的数据更新至gridPanel列表中,但是不能更新页码22 * 总页数还是之前全部查询的总页数,因此分页查询功能失效。23 * 后来在firefox中发现gridPanel中有个TotalCount的属性,该属性为列表24 * 的总页数,但是gridPanel中并没有设置此属性的方法,因此我通过25 * define一个新的Ext类继承EXT.DATA.STORE的方式,加入了此方法,26 * 不过经过试验确实能在debug时,27 * 确实能对girdPanel的TotalCount属性进行更改,但是还是无法对页面的28 * GridPanel右下角的总数进行更新,所以怀疑是girdPanel没有进行刷新,29 * 仅进行数据的刷新,通过资料查找,能刷新girdPanel的仅能是load()方法30 * */31 ds_edisCommonUser.loadData(_jsonStore);32 ds_edisCommonUser.setTotalCount(_jsonTotalProperty);33 /*34 _searchProxy 是为了更新 gridPanel中proxy中的totalProperty属性,35 不过更新也无法对页面中girdPanel的页码进行更新36 */37 _searchProxy = new Ext.data.proxy.Proxy({38 reader:{39 totalProperty:_jsonTotalProperty40 }41 });42 ds_edisCommonUser.setProxy(_searchProxy);43 44 },45 error:function(data){46 alert(‘ww‘)47 }48 49 })
关于EXT gridPanel进行高级查询时load提交后台乱码以及其他方式更新store的方法及遇到的问题