2012-04-12 4 views
1

특정 열의 항목을 연결하려고하는데 각 항목은 json 문자열에서 다른 id으로 연결됩니다. 불행히도 API를 사용하여이 작업을 수행 할 수있는 방법을 찾을 수 없습니다. API를 사용하지 않고도이를 수행 할 수있는 방법이 많이 있습니다.하지만 각 항목 (각 항목을 링크하는 방법)을 찾고 있습니다. 특정 id에 대한 링크 포함). 내가 원하는 무엇JQuery DataTables 링크 항목

$.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 
       ] 
      ); 
     }); 
    }); 

을위한 것입니다 :

그래서 여기에 내가 서버에서 JSON을 얻을 getJSON를 사용하고, 나는 다음과 같은 테이블이 JSON에서 데이터를로드, 내 코드입니다 각 행은 contact_nameid (JSON에 있음)에 연결하고이 $.each 루프 내에서 item.contact_id을 사용하여 액세스 할 수 있습니다.

DataTables API를 사용하여이 작업을 수행하는 방법이 있습니까? 그렇다면 나를 설명하고이를 도와 줄 수있는 유용한 리소스를 제공 할 수 있습니까?

OBS : 나는 JSONP

감사를 사용하고 있습니다. MY NEW 코드


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

그래서, 같은 장소에로드 할 것이고, 단지 함수를 수정하면됩니다. –