2015-09-16 8 views
12

DataTable 1.10.9(https://datatables.net)を使用しています。データテーブルの列は、JavaScriptで初期設定ステップで定義され、各列は例えば、固有の名前を持っている:私は、私はそれを与えてくれた名前で、テーブルから列を取得することができます知っているデータテーブルの列の名前を取得するには?

var table = $('#example').DataTable({ 
      columns: [ 
       { name: 'first-name' }, 
       { name: 'last-name' }, 
       { name: 'position' }, 
       { name: 'location' }, 
       { name: 'salary' } 
      ] 
     }); 

が、私列オブジェクトから列の名前を見つける方法を見つけることができません。 (私はそれがコンポーネントの現在の状態で可能です願っています。)例:

 table.columns().every(function() { 
      //I'd want to see what the name of this column is, something like: 
      console.log(this.name()); //will throw an exception since no such function exists 
      //or 
      console.log(this.name); //will output 'undefined' 
     }); 

そこに名を取得するための適切な機能やプロパティは何ですか?

答えて

27

あなたはtable.settings().init()を通じて初期化オプションを取得することができます - それによってcolumns定義この方法:

var columns = table.settings().init().columns; 

クリックセル/ <td>の列インデックスは、(非表示の列の場合のベストプラクティス)を見つけることができます。

var colIndex = table.cell(this).index().column; 

対応column.nameセルがクリックされたときに

$("#example").on('click', 'td', function() { 
    //get the initialization options 
    var columns = table.settings().init().columns; 
    //get the index of the clicked cell 
    var colIndex = table.cell(this).index().column; 
    alert('you clicked on the column with the name '+columns[colIndex].name); 
}) 

あなたevery()例は

var columns = table.settings().init().columns; 
table.columns().every(function(index) { 
    console.log(columns[index].name); 
}) 

デモだろう警告クリックハンドラの例 - >http://jsfiddle.net/6fstLmb6/

+0

every()の部分としてこれを受け入れることは、私が質問で与えた例のために働くでしょう。 –

+0

私はそのAPIを後ろ向きに見つけた唯一の人になることはできませんか? – Mojimi

-1

Documentationは、columns().every()が現在の列のcolumn()オブジェクトにthisを設定することを示しています。さらに列オブジェクトを調べると、その列に含まれるデータを値の配列として返すメソッドがあることがわかります(column().data())。これにより、必要なデータが提供されます。

0

次はAPI documentごとにあなたのために働く必要があります。

var tableColumns = [{ 
    name: 'first-name' 
}, { 
    name: 'last-name' 
}, { 
    name: 'position' 
}, { 
    name: 'location' 
}, { 
    name: 'salary' 
}] 

var table = $('#example').DataTable({ 
    tableColumns 
}); 

table.columns().every(function (index) { 

    console.log(tableColumns[index].name); 

}); 
+0

ことをおそらく動作しますが、私はより多くのDataTable中心のアクセスソリューションを望んでいます。クラスを反復している列は、DTオブジェクト参照しか持たないので、tableColumns配列にアクセスすることはできません。 –

関連する問題