0

ExtJs 3.3.1 を使用しているのは、多くの拡張機能が 4.xx では機能しないためです。これらの拡張機能の 1 つに LiveGrid があります。試すことはできませんが、4.x のバッファー グリッドでも同様のことが起こると思います。グリッドに表示されている行のレポートを作成すると、バッファリングされた行のみが返され、現在のレコードの位置が変更されますが、残りのレコードの読み込みはレポートの終了後にのみ行われます。すべてのレコードを取得するにはどうすればよいですか?

ボタン ハンドラーで toReport(grid) を呼び出します。

  toReport = function(grid){
    var store = grid.getStore();
    var view = grid.getView();
    store.each(function(record) {
      Ext.defer(function(){
        index = readRow(store, record);
        if (index % 10 == 0){
          view.focusRow(index);
        }
      }, 500, this);
    });
    console.log(output)
  }

readRow = function(store, record){
  output = "";
  for (var xlCol=1;xlCol<record.fields.length+1;xlCol++){
    var veld = store.fields.itemAt(xlCol-1).name;
    waarde = record.get(veld);
    if (realTypeOf(waarde)==="date"){
      output += waarde.format("d-m-Y");
    }else{
      output += record.get(veld);
    }
  }
  console.log(store.indexOf(record)+ " " + output);
  return store.indexOf(record);
}
4

2 に答える 2

1

グリッドは、表示するレコードを取得するために、ストア フィルター、ソーター、ページングなどを操作する必要があります。ストア自体は、フィルターなどに一致するレコードのサブセットのみをメモリに保持します。これが、ストアが Ext で設計されている方法です: ストアは、1 つのビューのみにバインドされるように意図されています。

あなたの場合、最も簡単な解決策は、同様の構成で別のストアを作成し、そのloadメソッドをパラメーターで使用して、すべてのレコードを取得することだと思います。

基本的に同じデータを取得するために複数のリクエストを発行することに気が進まない場合は、 をご覧くださいExt.data.Proxy。ストアとは異なり、プロキシは特定のビューやタスクにバインドされておらず、複数のストア インスタンス間で共有できます。したがって、理論的には、サーバーからすべてのレコードを一度に要求し、それらのサブセットを複数のストアにフィードするプロキシを作成できます。そのためにdoRequestは、プロキシのメソッドを実装する必要があります (または、おそらく既に使用しているプロキシのメソッドをオーバーライドします)。

于 2013-06-03T12:39:14.743 に答える