2012-04-12 11 views
1

特定の列のアイテムをリンクしようとしていますが、それぞれがjson文字列と異なるidにリンクされています。残念ながら、私はAPIを使用してこれを行う方法を見つけることができません(APIを使用せずにこれを行う方法はたくさんあります)。具体的なリンクはidです)。だからここJQuery DataTablesリンクアイテム

が私のコードですが、私は、サーバーからJSONを取得するためにgetJSONを使用して、私はこのような表には、このJSONからデータをロード:

$.getJSON("http://url.from/method?parameter=foo&callback=?", function(data) 
    { 
     var total = 0; 
     $("#table_body").empty(); 
     var oTable = $('#mytable').dataTable(
      { 
       "sPaginationType" : "full_numbers", 
       "aaSorting": [[ 0, "asc" ]] 
      }); 

     oTable.fnClearTable(); 

     $.each(data, function(i, item) 
     { 
      oTable.fnAddData(
       [ 
        item.contact_name, 
        item.contact_email 
       ] 
      ); 
     }); 
    }); 

私が何をしたいのか、ですcontact_nameidにリンクします。これはJSONにもあり、この$.eachループ内でitem.contact_idを使用してアクセスできます。

DataTables APIを使用してこれを行う方法がありますか?私に説明し、これを手助けする良いリソースを提供することができますか?

OBS:私はJSONP

感謝を使用しています。


MY NEW CODE WITH UPDATE:

エラーは今、私は私がクリックしたときに、IDを取得し、私は$.eachループ内の行を処理していたという事実に起因していますクリックすると、最後に処理された行が常にidになります。 は、id列を表示しません

var options = { 
    "sPaginationType" : "full_numbers", 
    "aaSorting": [[ 0, "asc" ]], 
    "aoColumns": [{ 
     "sTitle": 'Name', 
     "sClass": "dtName", 
    }, { 
     "sTitle": 'Email', 
     "sClass": "dtEmail", 
    }, { 
     "bVisible": false 
    }], 
} 
var oTable = $('#mytable').dataTable(options); 

この表がありますが、次のコードのようにそれをを得ることができます:

var options = 
     { 
      "sPaginationType" : "full_numbers", 
      "aaSorting": [[ 0, "asc" ]], 
      "aoColumns": [{ 
       "sTitle": 'Name', 
       "sClass": "dtName", 
      }, { 
       "sTitle": 'Email', 
       "sClass": "dtEmail", 
      }, { 
       "bVisible": false 
      }], 
     } 

     var oTable = $('#table').dataTable(options); // Creates a new instance of the DataTable 

     oTable.fnClearTable(); 

     $.each(data, function(i, item) 
     { 

      oTable.fnAddData(
       [ 
        item.contact_name , 
        item.contact_email, 
        item.contact_id 
       ] 
      ); 

      var rowData = oTable.fnGetData(i); // fetch all the ids into this array 
      $('#table tbody tr').click(function() 
      { 
       window.location.href = "/panel/contacts/"+rowData[2]; 
      }); 
     }); 

答えて

2

それを試してみてください

var rowData = oTable.fnGetData(rowNode); 

または

var rowData = oTable.fnGetData(0); // for the first one 

console.log(rowData[0]); 

表示されていないため、jQueryで取得できません。

編集:申し訳ありませんが、私はあなたがAddData関数が第三位置にitem.contact_idを入れて使用する場合、一つのことを忘れてしまった:

oTable.fnAddData([ 
    item.contact_name, 
    item.contact_email, 
    item.contact_id 
]); 

あなたはクリックイベントのIDを取得したい場合は、それを実行します。

jQuery('#mytable tbody tr').live('click', function() { 
    var selectedRow = oTable.fnGetData(this), 
     url = "/yourUrl/" + selectedRow[2]; 

    window.location.replace(url); 
}); 
+0

待機このコードのJSON項目はどこにありますか?いくつかのテキストを読み込んで翻訳しているのが分かりますが、item.contact_nameとitem.contact_emailをロードする場所はどこですか? – rogcg

+0

申し訳ありません、私は私のjsに翻訳を置くのに慣れています、私はそれを編集します。 –

+0

だから、同じ場所にロードして、機能を変更するだけです。 –