2017-01-23 9 views
0

私は結果が2列でグループ化されているデータテーブルをフォーマットするビジネス要件を持っているdatatables-row_groupingどのように複数の列でグループ、jqueryのDataTableの

からスタートします。

これは私のデータテーブルの設定に必要なものに近い結果を生成するものですが、2番目の列の値を取得できません。

api.column(下の1は最初の列を参照していますが、私は2番目の列も必要です。)列を試しました([1、2]と.each()の結果の配列を取得する予定です。それは失敗だった。どのような援助のための

var dtOptions = { 
    "dom": '<"clearfix"><"pull-left"l><"pull-right"Bf>r<"horizontal-scroll"t><"pull-left"i><"pull-right"p><"clearfix">', 
    "pageLength": 10, 
    "paging": true, 
    "columnDefs": [ 
    { 
     "targets": groupCols, /// this is an array [1, 2] 
     "visible": false 
    }], 
    "order": [[1, 'asc']], 
    "displayLength": 15, 
    "drawCallback": function (settings) { 
     var api = this.api(); 
     var rows = api.rows({page:'current'}).nodes(); 
     var last = null; 

     api.column(1, { page: 'current' }).data().each(function (group, i) { 
      if (last !== group) { 

       $(rows).eq(i).before(
        '<tr class="group"><td colspan="3">' + group + '</td><td colspan="14">' + need_second_column_string_here + '</td></tr>' 
       ); 

       last = group; 
      } 
     }); 
    } 
} 

ありがとう。私は私のために働いたソリューションを共有する

+0

[jqueryデータ型で複数の列をグループ化する方法](http://stackoverflow.com/questions/31158732/how-to-group-multiple-columns-in-jquery-datatables) –

+0

おそらく私はちょうどそれを見るために密集するが、私はここに投稿する前にそれを見て、それが私を助ける方法を見ていない。 – user3071434

答えて

0

思想は.... $ currTable.rows(行[I] ._ DT_RowIndex)を参照してください。下のjsのdata()[0] [CommentCol]

var dtOptions = { 
    "dom": '<"clearfix"><"pull-left"l<"toolbar">><"pull-right"Bf>r<"horizontal-scroll"t><"pull-left"i><"pull-right"p><"clearfix">', 
    "pageLength": 10, 
    "paging": false, 
    "columnDefs": [ 
     { "visible": false, "targets": hiddenCols }, 
     { "orderable": false, "targets": allColumns } 
    ], 
    "sort": true, 
    "order": [[0, 'asc'], [1, 'asc']], 
    "displayLength": 15, 
    "drawCallback": function (settings) { 
     var api = this.api(); 
     var rows = api.rows({ page: 'current' }).nodes(); 
     var last = null; 

     var CommentCol = -1; 

     _.each(api.columns().header(), function (e, i) { 
      if(e.innerHTML == "Comments"){ 
       CommentCol = i; 
      } 
     }) 

     api.column(groupByCol, { page: 'current' }).data().each(function (group, i, $currTable) { 
      if (last !== group) { 

       $(rows).eq(i).before(
        '<tr class="group"><td class="nowrap" colspan="3">' + buttons + '<div style="margin-right:6px;"><b>Lot:</b> ' + group + '</div></td><td colspan="16"><b>Comments:</b> ' + $currTable.rows(rows[i]._DT_RowIndex).data()[0][CommentCol] + '</td></tr>' 
       ); 

       last = group; 
      } 
     }); 
    } 
} 

おそらくエレガントではありません....しかし効果的です。

関連する問題