本帖最后由 wyanshan 于 2012-11-22 11:18:19 编辑

解决方案 »

  1.   

    查询的时候发送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
                });
    ////////
                /*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
                });
            }
        });
    });
      

  2.   

    恩,多谢了,现在基本把问题解决了啦。在onReady外面定义一个函数,响应外面的按钮事件比如叫ClickToSearch的function。然后在onReady里面这些写一句:
    ClickToSearch=function(){执行更行Ext.grid.panel的代码,比如store的data更新等等。}
      

  3.   

    使用代理autoLoad加载Model和Fields......后台动态生成Model的Fields