2011-02-04 29 views
1

私はDataTable pluginを使用しています。テーブルから2列のデータを選択する方法は?

テーブルの2つの列を選択して、後で処理するための配列として取得したいと考えています。 ($ .postから

は)私は、フォームを以下でJSONを取得する呼び出す:

{"sEcho": 26, 
"iTotalRecords": 26, 
"iTotalDisplayRecords": 10, 
"aaData": [[ "20090301","60"], 
      [ "20090302","253"], 
      [ "20090303","108"], 
      [ "20090304","166"], 
... [snip] ... 
      [ "20090327","209"], 
      [ "20090328","452"], 
      [ "20090329","450"], 
      [ "20090330","143"] 
      ], 
"aoColumns": [{"sTitle": "The observed Date"}, 
       {"sTitle": "number of objects"} 
       ] 
} 

その後、私のようにテーブルを示しています。

$('#queryTable').dataTable(jsondata); 
私は希望

<table class="display" id="queryTable"></table> 

テーブルの列にclickイベントを追加するとjavacript Array

データテーブルの列全体を取得するにはどうすればよいですか?

+0

これらの事を追加することにより、質問を言い換えてください。データのソース(ajax、javascript配列)を確認し、可能であればサンプルデータを配置してください。 – naveen

+0

わかりました。 – Arman

答えて

2

何かが仕事ができる:http://jsfiddle.net/srMZR/5/:ここ

var myTable = $("#queryTable").dataTable(
    { 
     "aaData": myData, 
     "aoColumns": myColumns 
    } 
); 
myDataArray = myTable.fnGetData(); 

myColumnArray = [] 
$("#queryTable thead tr th").click(function() 
    { 
     var index = $(this).index(); 
     for (var i = 0; i < myTable.fnSettings().fnRecordsTotal(); i++) 
     { 
      myColumnArray[i] = myDataArray[i][index]; 
     } 
    } 
); 

は実施例です。列ヘッダーをクリックすると、その列のデータの配列が取得されます。

+0

非常に良い!まさに私が必要とするもの、ありがとう。 – Arman

0

アダムの答えはあなたが必要としているものです(あなたがすでに答えているように)が、ここで(やや難しい)方法です。私が少しでもそれに取り組んだので、私は先に進み、投稿します。例えば()列1と列2

注、私はそれを行う唯一の理由を取得するには:基本的に、私はテーブルの行の上に反復して、子セレクタを使用:)

http://jsfiddle.net/bXBhZ/4/

それが動作していたことを2回確認することです(ディスプレイのドロップダウンから25を選択し、2ページに行くことができます)。あなたが見たいと思って何

されています。基本的に、私がやっていること(2回...)JSON配列にすべての行をコピーして、テーブルをコピーし、別のDataTableを作成している

$('#queryTable tbody tr').each(function(){ 
    var date = $(this).children('td:eq(0)').text(); 
    var obj = $(this).children('td:eq(1)').text(); 
    ... 
}); 

。私は配列のテキストを保持するためにpreタグを使い、jQuery.parseJSON()を使って使います。

何らかの理由でこのようにしたい場合は、ここに例を示します。

HTML

<table class="display" id="queryTable"></table> 
<table class="display" id="queryTable2"></table> 
<br style="clear: both;"/> 
<pre id="json"></pre> 

Javascriptを

var jsondata = {"sEcho": 26, 
       "iTotalRecords": 26, 
       "iTotalDisplayRecords": 10, 
       "aaData": [[ "20090301","60"], 
          [ "20090302","253"], 
          [ "20090303","108"], 
          [ "20090304","166"], 
          [ "20090327","209"], 
          [ "20090328","452"], 
          [ "20090329","450"], 
          [ "20090330","143"] 
          ], 
       "aoColumns": [{"sTitle": "The observed Date"}, 
           {"sTitle": "number of objects"} 
           ] 
}; 

$('#queryTable').dataTable(jsondata); 

var numrows = 1; 

$('#queryTable tbody tr').each(function(){ 
    var date = $(this).children('td:eq(0)').text(); 
    var obj = $(this).children('td:eq(1)').text(); 
    var row = "[\""+date+"\",\""+obj+"\"],\n"; 
    row = numrows == 1 ? "["+row : row; 
    $('#json').append(row); 
    numrows++; 
}); 

numrows = 1; 

$('#queryTable tbody tr').each(function(){ 
    var date = $(this).children('td:eq(0)').text(); 
    var obj = $(this).children('td:eq(1)').text(); 
    var comma = $('#queryTable tbody tr').length != numrows ? "," : "]"; 
    var row = "[\""+date+"\",\""+obj+"\"]"+comma+"\n"; 
    //row = numrows == 1 ? "["+row : row; 
    $('#json').append(row); 
    numrows++; 
}); 

var jsondata2 = jsondata; 
jsondata2.aaData = jQuery.parseJSON($('#json').text()); 

$('#queryTable2').dataTable(jsondata2); 
関連する問題