2017-11-03 5 views
2

私はAjaxでjQueryデータテーブルを使用しています。 Laravelとサーバー形式でJSONを返します。行の子を持つjQueryデータ型を使用してテーブルを構築する方法

{ 
"draw":0, 
"recordsTotal":201 
,"recordsFiltered":201, 
"data":[{ 
"id":"1", 
"numsocio":"1", 
"identificacion":"9999999999", 
"nombre":"Anna, 
"apellidos":"Desclau", ........ etc 

そして、私はこの(3行サンプル)のようなテーブルを構築したい

table

私は

$(document).ready(function() { 
    $('#socios_datatable').DataTable({ 
     ajax: '{{ route('socios.datatable') }}', 
     columns: [ 
      { data: 'foto' }, 
      { data: 'nombre' }, 
      { ... }  
     ] 
    }); 
}); 
を使用しています

そして私はhttp://www.cscc.edu/_resources/app-data/datatables/examples/api/row_details.htmlの情報ポストでテストしてきましたが、動作させるためには得られません。 2つのサブローを持つ行を簡単に作成する方法は? jQueryのデータ型は、複数の列を持つ1つの行には最適ですが、複雑な行に対しては難しいことがわかります。

誰でも助けてもらえますか?

+0

これを追加するのを忘れました。 var tr = $(this).closest( 'tr'); var row = table。 '$('#example tbody ')。行(TR); (row.child.isShown())であれば{ //この行は既に開かれている - row.child.hide()を閉じ、 tr.removeClass( '示す');} 他 {//開きこの行 row.child(フォーマット(row.data())).SHOW(); tr.addClass( '示す'); }}); ' – Conceptz

+0

ensenia MASコードSI quieries mas ayuda。 (もしあなたがもっと助けたいと思えばもっとコードを表示してください) – Conceptz

+0

私は行を開いたり閉じたりしたくありません...私はちょうどcolspanのようにしたい –

答えて

1

追加情報の表示にはChild rowsを使用することを強くお勧めします。

残念ながら、ROWSPANCOLSPANの属性は、jQuery DataTablesによってテーブル本体で正式にサポートされていません。

ただし、回避策があります。しかし、いくつかの制限があります。ほとんどのDataTables拡張機能を使用することはできず、検索/並べ替えは無効にして正しく動作するよう調整する必要があります。

ROWSPAN属性をRowsGroupプラグインを使用してエミュレートすることができます。詳しくは、jQuery DataTables: ROWSPAN in table body TBODYの記事を参照してください。

COLSPAN属性をエミュレートするには、非表示セルのトリックを使用できます。詳しくは、jQuery DataTables: COLSPAN in table body TBODYの記事を参照してください。

上記の両方の回避策を組み合わせると、同時にセルを縦横同時にグループ化することもできます。

例えば、データを使用して、シナリオのためのサンプルコードは、Ajaxを介して受信したが、次のようになります。

var table = $('#example').DataTable({ 
    'ajax': 'https://api.myjson.com/bins/pr6dp', 
    'columnDefs': [ 
     { 
     'targets': [1, 2, 3, 4, 5], 
     'orderable': false, 
     'searchable': false 
     } 
    ], 
    'rowsGroup': [0], 
    'createdRow': function(row, data, dataIndex){ 
     // Use empty value in the "Office" column 
     // as an indication that grouping with COLSPAN is needed 
     if(data[2] === ''){ 
     // Add COLSPAN attribute 
     $('td:eq(1)', row).attr('colspan', 5); 

     // Hide required number of columns 
     // next to the cell with COLSPAN attribute 
     $('td:eq(2)', row).css('display', 'none'); 
     $('td:eq(3)', row).css('display', 'none'); 
     $('td:eq(4)', row).css('display', 'none'); 
     $('td:eq(5)', row).css('display', 'none'); 
     } 
    }  
}); 

は、コードとデモのためthis exampleを参照してください。

詳しくはjQuery DataTables: COLSPAN in table body TBODY - COLSPAN and ROWSPANの記事を参照してください。

+0

素敵な仕事!!! :)しかし、それは単なる化粧品の解決策に過ぎず、行ごとに2倍のJSONを用意しなければなりません。また、化粧スタイリングの後にコードに

を挿入することもできます。細部/余分な行として挿入する子コンテンツを入れ子にしたJSONを作成するのは難しくありません。私はあなたが各行の上にヘッダーを置くことを望むなら、それが本当に良いと思う。ところで、別のアンカーテキストで同じURLへの複数のリンクがあるあなたの意見を見てください。しかし、最初のアンカーテキストは実際に重要なものです/あなたのサイトのキーワード値を与えます。 – davidkonrad

+0

@ davidkonradの場合、2行目を細部に挿入してRowsGroupプラグインと互換性があることは難しいかもしれません。私の解決策は、jQuery DataTablesのサポートが必要なプレーン・テーブルの使用が制限されている可能性があります。 –

関連する問題