【发布时间】:2014-10-01 06:51:01
【问题描述】:
伙计们,
我想使用 D3.js 为以下 JSON 呈现一个 html 表
我用于此过程的 JSON 在这里,http://jsfiddle.net/d9wgnbdd/2
例如,“办公室类型”有更多“代码”,而“代码”有更多“集群”,集群也有更多分支。
我想将表格显示如下,在此@mccannaff 中需要您的帮助。期待
Code Office-code Corp-Code Region-Code Cluster-Code
CO CRP CBE BN117 C1038
CO CRP CBE BN117 C1039
CO CRP CBE BN117 C1049
CO CRP CBE BN117 C1147
这是我要显示表格的 html,
<html>
<head>
<meta http-equiv="Content-Type" content="text/html;charset=utf-8">
<title>D3: Subselection Example</title>
<script type="text/javascript" src="d3.js"></script>
<style type="text/css">
body {
font: 13px sans-serif;
}
td, th {
padding: 1px 25px 0px 1px;
border: 1px black solid;
width:80px;
}
ul {
list-style: none;
font-weight: bold;
}
li {
margin: 0.2em 0.0em;
padding: 0.5em 1.0em;
font-weight: normal;
}
</style>
</head>
<body>
<script type="text/javascript">
d3.json("Udashboard.json", function (error,data) {
function tabulate(data, columns) {
var table = d3.select('body').append('table')
var thead = table.append('thead')
var tbody = table.append('tbody');
// append the header row
thead.append('tr')
.selectAll('th')
.data(columns).enter()
.append('th')
.text(function (column) { return column.id; });
// create a row for each object in the data
var rows = tbody.selectAll('tr')
.data(data.objects)
.enter()
.append('tr');
// create a cell in each row for each column
var cells = rows.selectAll('td')
.data(function (row) {
return columns.map(function (column) {
return { column: column.id, value: eval('row.'+column.key) };
});
})
.enter()
.append('td')
.text(function (d) { return d.value; });
return table;
}
var columnFields = [ { id: "ID", key: "id" },
{ id: "Code", key: "officetype[0].code" },
{ id: "C_Code", key: "officetype[0].corp[0].code" },
{ id: "Name", key: "name" } ];
console.log (data);
// render the table(s)
tabulate(data, columnFields); // 2 column table
});
</script>
</body>
</html>
有人能帮我解决这个问题吗?
【问题讨论】:
-
有人想对嵌套数组元素进行分组吗?
-
对不起@Mary.Hansen,我看不到一种基于数组元素的分组方式,但也以如此复杂的方式嵌套。我建议你找到一种方法来展平这个 JSON 对象或将关键元素提取到更类似于表格的东西中,然后再问这个问题!
-
我们可以渲染一个包含相同元素的 d3 表吗?不需要分组..我更新了我的问题——请看我现在简化的问题。希望你能帮忙。
标签: javascript d3.js multidimensional-array data-visualization crossfilter