2017-11-22 3 views
0

データテーブル1.10を使用してテーブルを生成しています。私はサーバー側の処理を使用します。別の変数(ステータス)に応じて、テーブルの余分な列を表示または非表示にしたいとします。 datatable.netサーバーサイド処理で条件付きで列を表示/非表示にするにはどうすればよいですか? ここに私のコード(単純化)されていますdatatable.netサーバサイド処理で条件付きで列を表示/非表示にするにはどうすればいいですか?

$('#' + id).DataTable({ 

      dom: "< <'col-md-4 col-sm-12 col-xs-12'f><'col-md-8 col-sm-12 col-xs-12'l><'col-md-12 col-sm-12 col-xs-12 no-padding't><'col-md-3 col-sm-12 col-xs-12'i><'col-md-9 col-sm-12 col-xs-12'p>>" 
     , responsive: true 
     , createdRow: function (row, data, dataIndex) { //this is used to add data- attribute to td element 
      $(row).find('td:eq(4)').attr('data-priority', data.Actions[0].action_priority); 
     } 
     , autoWidth: true //false 
     , scrollX: true 
     , pageResize: true 
     , serverSide: true 
     , processing: true 
     , pageLength: 100 
     , deferRender: true 
     , ajax: { 
      url: actionURL, 
      type: 'POST', 
      contentType: "application/json", 
      data: function (model) { 

       model.statusID = statusID ; 

      }, 
     } 
     , columnDefs: 
      [ 

      { 
       targets: 0, 
       createdCell: function (td, data, rowData, row, col) { 

*//this is the part that does not work 
        if (incidentStatusID == 1) { 
         //here show column 
         visible:true; 
        } 
        else{ 
         //hide column... 
         visible: false; 
        } 
       } 

      },* 
      { 
       targets: 3, 
       createdCell: function (td, data, rowData, row, col) { //this is used to add data- attribute to td element 
        $(td).attr('data-priority', data.Actions[0].action_priority); 
       } 
      } 

      ] 

は、たぶん私は列のcreatedRowの同等、およびcreatedCellを使用することができますか?私は1つを見つけることができませんでしたが。これをどうやって行うのですか?

+0

https://datatables.net/examples/api/show_hide.htmlこのリンクを参照してください:ここで

は、コードのrelevent新しい作品です。 –

+0

ご意見ありがとうございます。リンクは直接私に解決策を提供しませんでしたが、別の方法で考えていました...テーブルの作成後に列を非表示にすることで、「ロード」しないでください。 – Sychal

+0

何か試してみるのは良いことです。 –

答えて

0

解決策が見つかりました。列を最初に生成し、後でそれを隠すので完全ではありません。

これは私が隠そうとしている列です。私はそれにIDを付け加えました。テーブルが生成された後

<th id="controls" data-priority="-1">Controls</th> 

は、次にデータテーブルのコードでは、私はこれは多分改善することができるので、必要なときに、列にのみ生成されます(列を非表示または表示するためには、fnRowCallbackへの呼び出しを追加しました。 ..)。次に、条件(変数 'statusID')をチェックして列を表示または非表示にし、JQueryで非表示にしました。

fnRowCallback: function (nRow, aData, iDisplayIndex, iDisplayIndexFull) 
{   
     if (statusID== 0) { 
      $('#controls').hide(); 
      $('td:eq(-1)', nRow).hide(); 
     } 
     else { 
      $('#controls').show(); 
     } 
} 
関連する問題