ext中分页后,,那个刷新按钮怎么用?

我通过台下生成了一个带分页的combobox

 

var ds = new Ext.data.Store({
        proxy: new Ext.data.PagingMemoryProxy(arr),
        remoteSort:true,
        reader:new Ext.data.ArrayReader({},[
            {name:'bookId'},
            {name:'bookName'}
        ])
    });


var bookSelect = new Ext.form.ComboBox({
        id: 'bookIdMG',
        fieldLabel: resourceBundleHandler.getLabel('SELECT_BOOK_TO_LIST'),
        store:ds,
        valueField: 'bookId',
        displayField: 'bookName',
        typeAhead: true,
        mode:'remote',
        pageSize:5,
        triggerAction: 'all',
        selectOnFocus: true,
        minListWidth: 230,
        emptyText: resourceBundleHandler.getLabel('SELECT_EMPTY_TEXT1'),
        readOnly: true,
        allowBlank: false
    });
这样确实能生成一个带有分页的combobox(combobox只要加一个pageSize属性就可以实现,但“mode”属性一定要是remote),可当数据库中的数据发生了变化,我就想通地点击这上面
的刷新按钮来更新数据来显示但发现刷新只是对之前的store进行了刷新,并不会去执行相应的操作,于是我就又采用了下面的方法:
Ext.PagingToolbar.prototype.onClick = function(which){
        var store = this.store;
        
        switch(which){
            case "first":
                this.doLoad(0);
            break;
            case "prev":
                this.doLoad(Math.max(0, this.cursor-this.pageSize));
            break;
            case "next":
                this.doLoad(this.cursor+this.pageSize);
            break;
            case "last":
                var total = store.getTotalCount();
                var extra = total % this.pageSize;
                var lastStart = extra ? (total - extra) : total-this.pageSize;
                this.doLoad(lastStart);
            break;
            case "refresh"://主要是加了下面二句取后台及ds重新load
                            arr=getInfoByDB();
                            ds.loadDate(arr);
            break;
        }
    }

 

 这样子能通过刷新后去后台拿到最新的数据(可以用了loadDate(arr)后又失去了分页效果,数据全在一页显示出来,分页条还是存在),可是这个分页条的store并没有重新加载,当点击上一页或下一页等其它按钮的时候,数据又回到了刷新前的数据了。。。

 

不知道我描述的清楚不,,,,,或者我只是想知道:如何在分页以后,点刷新能去DB中拿出新的数据显示出来。。。。


问题补充:
非常感谢“yourgame”的关注,可以我的问题有点不同
1,我不能在定义store的时候通过url远程去拿数据,因为我们有专门的action跳后台拿数据,再通过我上面的方法构造一个store,所以这样也就无法用store.reload()了,,reload是通过store中的url去重新拿数据的(大概是 这样)


问题补充:
因为我们自己有自己整合的框架,请求后台有专门的方法,并不是直接通过一个url就可以跳到servlet去的,所以我只有通过点这个刷新按钮去启动一方法拿 到最新的数据,再来更新这个store,所以我才去改了那个onclick方法,当刷新的时候再去拿最新数据,数据是拿过来了,可通过store的loadData()却没用。。。
我没有用过reload()(reload()就需要store中的url属性的支持去后台拿 数据的。所以这个在我这根本不可以,我没办法提供这个后台的servlet访问),ext也是自己在网上学的,身边也没有很懂的人(习惯了一种思维,没个人直接给我提示一下也转不过来。理解不了)


--非常感谢您(yourgame)的关注。。。
问题补充:
1,单独做了个例子,ds用url去servlet拿数据,这样在分页条中,它每点一次按钮(如前一页,后一页)都会到后台拿一次数据(这样就适合做真分页,跟据pagesize和当前页去db拿数据再到前台显示),对于这点有一个新的问题:怎么去拿到当前页,会自动传到后台吗?
以上的例子我其实最后还是分页没有成功,数据显示在一页里(但如我有10条数据,每页5条,它还真是分了二页,只不这每页都是同样的10条数据),就是分页失败了。加上store.load({params:{start:0, limit:10}}); 也没用,,怪怪的,,,
不过以上方法倒是挺方便的。。。。(只是我还要再研究下。。)

2,像我之前那种ds构造做的其实是一个假分页,只是以分页显示而以。。。。。

3,这里怎么不能跟贴回复,我只能以问题补充来追加?

简单问题复杂化了.如果用到了分页.一般都是要远程来获取数据的

想刷新数据,我不明白为什么你要用这么复杂的方式,store.reload()不可以吗?

为什么呢?说明原因,你的目的不就是刷新数据吗?
而刷新数据 relaod是最好的方法,不能因为你的那个问题而去逃避他而找一个离谱的解决办法。我们要采用最佳解决方案。考虑的不仅仅是解决这个问题。还要考虑更多。比如通用,以及后期维护

你可以这样,点击按钮后动态创建一个store。url就是你现在要取数据的action,然后把创建的store替换掉目前的就可以了。具体参考这个combobox的api。貌似有一个setStore方法