PDA

View Full Version : ページングの時の検索条件



ak_ext
23 Apr 2009, 4:09 AM
javaでproxyでext、gridのデータを取得してます。
検索時に条件がある場合、
その条件をページングのnextなどを押した時に
自動的にもっているのでしょうか。

初回検索時はparamにセットしているのですが、
nextを押した時はext-allの方に入るので、
セットしていません。検索条件をセッションにいれて、
サーブレットの方でセットするべきでしょうか。

yuki
23 Apr 2009, 6:05 AM
質問の意図がよく分かりませんが、サーバーに送信するパラメーターを可変にしたいのであれば、beforeloadイベントでpramasの設定ができます。

ak_ext
23 Apr 2009, 6:40 PM
例えば サンプル
ext-2.2.1\examples\grid のpaging.html

でreplieテキストボックスを追加して検索した場合
(エビデンス参照)
初期検索はparamを渡せると思うのですが、
nextページボタンなどを押した時にbeforeloadは
どこに書くのが正しいのでしょうか。

また
bbarの中のパラメータに
paramNamesというのがあるのですが、
ここに初期値:{start: 'start', limit: 'limit'}
とあったので、他の検索条件を
初期値:{start: 'start', limit: 'limit',replie:10})
などと書けば、
サーブレット側でパラメーターを取得できるのでしょうか。

ak_ext
23 Apr 2009, 8:51 PM
下記のdoLoadのparamNamesにパラメーターとして渡したい値を
 セットすると思うのですが、
 その後の
 o[pn.start] = start;
 は新しい条件を追加した場合は増やす為、
 そのページ独自に定義しないと無理そうです。
 例えばo[pn.replies] = replies;

 
その後this.store.load({params:o});
 でparamsに指定された値を持って、
 サーブレットの方に通信に行くと思っています。
 
// private
doLoad : function(start){
var o = {}, pn = this.paramNames;
o[pn.start] = start;
o[pn.limit] = this.pageSize;
if(this.fireEvent('beforechange', this, o) !== false){
this.store.load({params:o});
}
},

changePage: function(page){
this.doLoad(((page-1) * this.pageSize).constrain(0, this.store.getTotalCount()));
},
// private
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;

}
},

ak_ext
24 Apr 2009, 12:59 AM
bbarの中でキーイベントを作って
その中で検索条件取得処理を
書いてあげる必要がありました。

ただこの方法だと
最初に検索した後、検索条件のテキストボックスの中身を変えて、
nextボタンを押下した時、
新しい条件で2ページ目を検索をしてしまいました。

これは検索条件を保持できないから、
仕方がないと言えば仕方ないですよね。