0

Jquery データテーブルとして実行されているテーブルがあります。次の要件があります

ユーザーが列をソートすると、

  1. 列を識別する必要があります
  2. このソート列に応じて、ユーザーには見えない別の列から値を取得したい
  3. この値を使用して、テーブルの最初の列を更新します。これは可視列です

http://datatables.net/release-datatables/examples/advanced_init/dt_events.htmlの例に従って、eventFiredという関数を使用してソートイベントをテーブルにバインドしました

私が自分自身を得ることができる最高のものは以下です

 function eventFired( type ) {     
          var oTable = $('#tabOverlayLeagueTable').dataTable(); //select table
          var oSettings = oTable.fnSettings(); //get settings
          var sortByindex = oSettings.aaSorting[0][0];//get index of sort column
          //var nNodes = oTable.fnGetNodes( ); // I am not sure if I should use this 
          var data = oTable.fnGetData( ); // I get the data from this call

          // loop then data rows
           for (var i = 0; i < data.length; i++) {

               // update the first column in the table
              // with a specific column (this is a hidden column). In 
              //example its cashiers rank figure
              oTable.fnUpdate( data[i].CashierRank, i, 0);
          }             
 } 

問題

  1. これは私の問題を解決する最良の方法ではないかもしれません
  2. data[i].CashierRank名前ではなくインデックスで列を取得したい
  3. コードが機能しません。永遠にループしているようです!
4

1 に答える 1

0

これが役立つことを願っています

問題 1 : 直感的には、すべてのデータの変更が完了したら、テーブル全体を 1 回だけ更新する方がよいと言えます。

問題 2: 列の説明にアクセスするインデックスによって、プロパティの名前を取得できます。

var colName = oSettings.aoColumns[sortByindex].mData

問題 3: 変です。これは単純な for ですので... 永遠にループするというのは、インデックスが無限になりがちで、長さで止まらないということですか?? テーブルがレンダリングされるたびにこの関数を実行している可能性があると思います。これらの列を更新すると、テーブルはソートされていると考えます。その場合、for 内で (fnUpdate を使用して) render を呼び出すため、無限ループを作成し、1 で述べたようにすべての値を変更した後にテーブル全体を更新します。解決する必要があります。

于 2013-07-26T12:13:10.857 に答える