当前位置: 代码迷 >> JavaScript >> ExtJs请教怎么查询并刷新小弟我这个简单的动态gridpanel
  详细解决方案

ExtJs请教怎么查询并刷新小弟我这个简单的动态gridpanel

热度:487   发布时间:2013-12-26 15:24:01.0
ExtJs请问如何查询并刷新我这个简单的动态gridpanel
本帖最后由 wyanshan 于 2012-11-22 11:18:19 编辑
以下就是我刚开始学习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
            });
  相关解决方案