2011-09-19 2 views
0

JSON 데이터를 수신하는 함수가 있습니다. 길이는 얼마든지 가능하며 데이터의 열과 행의 개수는 제한이 없습니다.동적 JSON 데이터를 전달하여 HTML 테이블 만들기

jqGrid가이 시나리오에 사용할 좋은 jQuery 플러그인이 될 것이라고 읽었지만 제대로 작동하지 않습니다. 있는 jqGrid 당신을 위해 작동하지 않는 경우

//This code is in another section of my web page but the data is valid 
//and is populated over a websocket 
var ss = $.parseJSON(data); 
var theGrid = jQuery("#list1")[0]; 
theGrid.addJSONData(ss.NewDataSet.SECURITY_GROUPS); 
//alert(ss.NewDataSet.SECURITY_GROUPS[0].NAME); 

$(document).ready(function() { 
      jQuery("#list1").jqGrid({ 
      datatype: "local", 
      height: 250, 
      multiselect: true, 
      caption: "Manipulating Array Data" 
     }); 
     }); 

<table id="list1"></table> 
+0

가'theGrid.addJSONData (ss.NewDataSet.SECURITY_GROUPS가) 안 :

는 여기에 AJAX 소스에서로드하는 방법 벌써? jqGrid가 초기화되기 전에 데이터가 채워지지 않았습니까? –

+0

아니요, 페이지에 대한 요청을하고 문서 준비가 완료되면 발동 버튼을 클릭 한 다음 JSON 객체를 채 웁니다. 이 시점에서 나는 이것을 HTML 테이블에 보내고 싶습니다. – Jon

답변

1

어쩌면 DataTables 시도해 :

나는 시도하고 내 테이블이 채워 갈 수있는 다음과 같은 코드가 있습니다. JSON을 통해로드하는 것은 내가 좋아하는 것일 뿐더러 매우 쉽습니다. ;`서에 포함될 http://datatables.net/release-datatables/examples/data_sources/ajax.html

$(document).ready(function() { 
    $('#example').dataTable({ 
     "bProcessing": true, 
     "sAjaxSource": '../ajax/sources/arrays.txt' 
    }); 
}); 

UPDATE

var columnArr = []; 
var valueArr = []; 
var data = ss.NewDataSet.SECURITY_GROUPS; //data is your SECURITY_GROUPS object 

//Strip the titles off your first array item only since they are all the same. 
$.each(data[0], function(key, value) { 
    columnArr.push({"sTitle" : key}); 
}); 

$.each(data, function(key, value) { 
    var innerArr = []; 
    $.each(value, function(innerKey, innerValue) { 
     innerArr.push(innerValue); 
    }); 
    valueArr.push(innerArr); 
}); 

$('#example').dataTable({ 
    "aaData": valueArr, 
    "aoColumns": columnArr 
});  
+0

AJAX를 통해서가 아니라, DataTables가 필요로하는 HTML 테이블의 레이아웃을 알지 못합니다. 그냥 JSON 객체를 던져서 그려 보겠습니다. – Jon

+0

다음을 확인하십시오 : http://datatables.net/release-datatables/examples/data_sources/js_array.html 바로 객체 리터럴에 바인딩 할 수 있습니다 (참고 : JSON은 정의에 따라 객체가 아닌 문자열입니다. 내가 아는 한, 얼마나 많은 컬럼을 가지고 있든간에 상관하지 않습니다. 당신이 할 필요가있는 유일한 일은 열 머리글을 벗겨내어 그 열 머리글이 어디에 있는지 알 수 있도록하는 것입니다. –

+0

여기에 JSON이 있습니다. https://gist.github.com/1226807 관심있는 내용은 103 행째 이후입니다. 첫 번째 데이터 집합을 반복하고 열 이름을 그릴 수있는 방법이 있습니까? – Jon

관련 문제