以下就是我刚开始学习ExtJs,版本4.0.7的store.reload()函数已经没有了请注意。
我这里面的Model,store里面的data,fields都是动态的,从后台ashx文件返回的,形式[totalcount:{},data:{},fields:{},HeaderText:{}]这样的,已经成功显示,这样的好处是支持动态的数据。不管ashx返回的什么数据,grid都可以显示出来。
现在的严重问题是:比如我在grid外面放一个文本框,一个按钮,查询比如某个部门的员工,如何让store重新load一下刷新grid呢?因为我的这些panel,model,store都是在Ext.Ajax.request的callback里面写的。
不知道我说清楚没有。谢谢。
Ext.onReady(function(){
//request data by Ext.Ajax.request from Server
Ext.Ajax.request({
url:'App_Ashx/Demo/Grid.ashx',
callback: function (options, success, response) {
var data=response.responseText;
//alert(data);
var jsonData=Ext.decode(data);
Ext.define('Users',{
extend:'Ext.data.Model',
fields:jsonData.fields
});
var store=Ext.create('Ext.data.JsonStore',{
model:'Users',
data:jsonData.data,
fields:jsonData.fields
});
var grid=Ext.create('Ext.grid.Panel',{
renderTo:'example-grid1',
width:600,
height:400,
store:store,
columns:jsonData.HeaderText
});
}
});
------解决方案--------------------
查询的时候发送ajax,再success的时候更新下store就行了,使用store.loadData方法,store声明为全局的好更新,你那样申明的store是私有的,外部获取不到就无法更新了
var store/////////使用全局store
function doSearch(){/////////查询函数
Ext.Ajax.request({
url:'App_Ashx/Demo/Grid.ashx?dept=部门ID',
callback: function (options, success, response) {
var data=response.responseText;
//alert(data);
var jsonData=Ext.decode(data);
store.loadData(jsonData.data);//清空原来的数据加载新数据
}
Ext.onReady(function(){
//request data by Ext.Ajax.request from Server
Ext.Ajax.request({
url:'App_Ashx/Demo/Grid.ashx',
callback: function (options, success, response) {
var data=response.responseText;
//alert(data);
var jsonData=Ext.decode(data);
Ext.define('Users',{
extend:'Ext.data.Model',
fields:jsonData.fields
});