検索ボタンをクリックしてグリッドストアにさまざまなパラメータを再読み込みするときに、ページングツールバーのパラメータを"page"
、"start"
、"limit"
にリセットする必要があります。
どうすればいいですか?
問題は、次のページにいて、新しい検索を行うときに、パラメーターpage=2
、start=25
、limit=25 dirty
があり、代わりにこのパラメーターをリセットする必要があることです。
私のコード:
listeners: {
click: function(){
Ext.getCmp('GrlGio').getStore().removeAll();
Ext.getCmp('GrlGio').store.load({
params:{
mode: "RIC",
DataRicerca: dd,
Pit: Ext.getCmp('cmbPiattaforma').getValue()
}
});
}
}
ありがとう!
手動でパラメータをリセットできます
Ext.getCmp('GrlGio').getStore().getProxy().pageParam =1;
Ext.getCmp('GrlGio').getStore().getProxy().startParam =0;
次に、ストアのロードを実行します。私はそれがハードコードされているように見えることを知っていますが、それは私が見つけた唯一の解決策です...
Ext 4では、 loadPage() がデータストアをリセットし、ページングツールバーを最初のページに戻すのに非常にうまく機能していることがわかりました。例:
store.loadPage(1) // note: 1-based, not 0-based
これを試して -
pagingToolbar.moveFirst();
Ext.data.storeをオーバーライドして、次の関数「resetStartParam」を定義します。
Ext.override(Ext.data.Store, {
resetStartParam:function(){
//get the latest store options
var storeOptions=this.lastOptions;
if(storeOptions!=undefined){
//get the param names
var pn = this.paramNames;
//get the params from options
var params=storeOptions.params;
//change the param start value to zero
params[pn.start] = 0;
//reset options params with this new params
storeOptions.params=params;
//apply this new options to store options
this.storeOptions(storeOptions);
}
}
});
次に、検索ボタンをクリックしてこの関数を呼び出します。
Ext.getCmp('GrlGio').getStore().resetStartParam();
それだけです。うまくいくはずです。
みんなcurrentPage = 1は私のためにトリックをしました
毎回ストアをロードする前に、以下を呼び出します。ちなみに、500件の結果が得られ、キャッシュにロードされます。ページネーションはローカル用です。新しい検索の前にこれを試すことができます。
var store = Ext.getStore('MyStoreS');
store.proxy.extraParams = { employeeId : searchStr};
store.currentPage = 1;
store.load();
これが古い投稿であることは知っていますが、ペニーの仕事を追加したいと思いました。 EXTJS 4を使用していますが、同様の問題が発生しました。新しい検索を行っても、ページ番号などがリセットされませんでした。私が見つけた解決策は、ナビゲーションバーで自動的に機能するように見えますが、ストアのcurrentPage属性を使用することです。私は少し奇妙な設定をしていますが、新しい検索を行うときにthis.currentPage = 1を実行すると、問題なく動作します
ハンドラーでこれを試してください
Ext.getCmp('gridpanel').getStore().removeAll();
Ext.getCmp('PagingToolbar').moveFirst();
この後、検索クエリを入力し、それに応じてストアを読み込みます
Ext.getCmp('gridpanel').getStore().load({params : { start : 0, limit : maxRecords, searchText : _searchText } });
それが役に立てば幸い
removeAll()の後にpagingToolbar.onLoad()を呼び出すだけです。簡潔でシンプル。
これが私がページングで検索を達成した方法です。 1つの要求のみを実行し、ページングデータを更新します。
onExecuteSearch: function(){
var params = this.getSearchForm().getForm().getFieldValues()
, proxy = this.getSomeGrid().getStore().getProxy();
proxy.extraParams = params;
this.getPagingToolbar().moveFirst();
}
getFieldValues()ドキュメント: http://docs.sencha.com/ext-js/4-0/#!/api/Ext.form.Basic-method-getFieldValues
プロキシ「extraParams」の詳細については、こちらをご覧ください: ExtJs4-baseParams構成プロパティを格納しますか?
これは正常に機能します(ページング情報を正しく更新します):
myStore.removeAll();
myStore.fireEvent('load', myStore, [], {});
ストア/グリッド全体を印刷するには、ページサイズを500に変更する必要があり、印刷したら、グリッドを元のページサイズの25に戻します。
// 500 records are now in the store and on the grid
ux.core.grid.Printer.print(this.getOrderList());
store.pageSize = this.displaySize; // new page size is 25
this.getPagingToolbar().doRefresh(); // equivalent of pressing a refresh button on the toolbar
トリックを行います-同じソーター/フィルター/ currentPageでストアをリロードします