2011-09-19 75 views
0

我有一个接收JSON数据的函数,它可以是任意长度并且包含任意数量的列和行数据。传递动态JSON数据来创建一个HTML表格

我读过,jqGrid将是一个很好的jQuery插件用于这种情况下,但我不能让它工作。

我有下面的代码,试图去填充我的表:

//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);'是在文档中.ready?你确定数据在jqGrid初始化之前没有被填充? –

+0

不,我向页面发出请求并准备好文档,然后点击一个按钮,然后填充我的JSON对象。在这一点上,我想发送到一个HTML表格 – Jon

回答

1

也许给DataTables一个尝试,如果jqGrid的是不是为你工作。这可能是我最喜欢的,并且非常容易通过JSON加载,如您所描述的。

以下是如何从一个AJAX源加载: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

相关问题