2011-02-10 5 views
0

ajaxクエリが完了すると、YUI DataTableを変更したいと考えています。例えば、私は4つのajaxクエリーを持っていて、1から10までのどこかで完了するものを探しています。 1sクエリが終了したらテーブルの構築を開始し、ajaxクエリが終了するたびにテーブルを再度変更したいと考えています。これを一般的に行う推奨方法はありますか?作成後にDataTableテーブルを変更する方法

特に、行の処理中に発生する可能性のあるエラーを表示するために列のフォーマット方法を変更したいと思います。しかし、エラーはゆっくりと処理されるため、データを最初に表示してからエラーを後で追加すると便利です。

ありがとうございました!

ジェイソン

答えて

0

私はあなたの複数の要求は、列のデータを集約している想定しています。私はまた、テーブルが静的(サーバー側のページングまたはソートではない)であると仮定しています。

  1. すべてのソースのすべての列を含むようにDataTableの列定義を設定します。
  2. 最速のクエリのサービスURLを示すDataSourceを作成します。
  3. DataTableをそのDataSourceでインスタンス化します。
  4. いずれの他のサービスのためのより多くのデータソースを作成する、またはこれらのサービスリクエストごとに、コールバックがこれらの線に沿って何かを行う必要があります
  5. お互いのサービスのためにYAHOO.util.Connect.asyncRequest(...)を呼び出す:

(前方擬似コード)

function callback(data) { 
    var recordset = myDataTable.getRecordSet(), 
     records = recordset.getRecords(), 
     i, len, rec; 

    for (i = 0, len = records.length; i < len; ++i) { 
     rec = records[i].getData(); // will return an object literal with data info 
     /* match the record object to the new data and update the record object */ 
    } 

    recordset.setRecords(records); 
    myDataTable.render(); 
} 

したがって、各付加的なサービスは、全表UIが更新され、レコード・レベルでデータを追加します。

HTH

+0

ルークは、私はあなたがrecordset.setRecords(レコード)を行う必要がないと思うねえ、私はあなたが参照を変更していると信じていないので、私はmyDataTable.render(やった)それだけでレンダリング新しいデータ。実際に、私はsetRecordのことをしたとき、何らかの理由で実際にすべてのデータを(視覚的に)消去しました... – FurtiveFelon

+0

いいですよね。 setRecordsは必要ありません。それがなぜそれを拭き取ったのかはっきりしない(明らかに、ヒップ・コーディングからの貧弱な)が、とにかくそれは疑問だ。 – Luke

関連する問題