【发布时间】:2019-06-27 05:03:13
【问题描述】:
我正在尝试向 dc.datatable 添加分页。
分页不工作且不显示页面。
使用这段代码,整个数据表都显示出来了,只有表格末尾的“下一个”和“上一个”按钮,但这些按钮不起作用。
如何解决一页显示 20 行的分页问题?
我的代码
<div class="chart col-sm-12" id="all-characters-div">
<div class="content-wrapper">
<h2>Comic Characters</h2>
<table id="all-characters"> </table>
</div>
</div>
<div id="pagination">
<span id="start"></span>-<span id="end"></span> of <span id="totalSize"></span>
<button id="prev" class="btn" onclick="prev()">Prev</button>
<button id="next" class="btn" onclick="next()">Next</button>
</div>
function makeGraphs(error, charactersData) {
var ndx = crossfilter(charactersData);
show_listCharacters(ndx);
updateResult();
dc.renderAll();
function show_listCharacters(ndx) {
var dataTable = dc.dataTable("#all-characters");
var dim = ndx.dimension(dc.pluck("name"));
// console.log(dim.top(Infinity));
dataTable
.dimension(dim)
.group(function(d) {
return "";
})
.columns(["name", "urlslug", "first appearance"])
.size(Infinity)
.sortBy(dc.pluck("name"))
.order(d3.ascending)
.transitionDuration(1000);
}
/*-----------------Table Pagination-----------*/
var resultStart = 0; var resultEnd =21;
var ndx;
var dataTable = dc.dataTable;
function displayResult() {
document.getElementById("start").innerHTML = resultStart;
document.getElementById("end").innerHTML = resultStart + resultEnd-1;
document.getElementById("totalSize").innerHTML = ndx.size();
d3.select('#prev').attr('disabled', resultStart-resultEnd < 0 ? 'true' : null);
d3.select('#next').attr('disabled', resultStart+resultEnd >= ndx.size() ? 'true' : null);
}
function updateResult() {
dataTable.beginSlice(resultStart);
dataTable.endSlice(resultStart + resultEnd);
displayResult();
}
function prev() {
resultStart -= resultEnd;
updateResult();
dataTable.redraw();
}
function next() {
resultStart += resultEnd;
updateResult();
dataTable.redraw();
}
【问题讨论】:
-
你应该包含你的html
-
有关图表库的问题请使用 [dc.js] 标签。 [dc] 是一个经典的 unix 计算器实用程序。
-
我还没有测试过你的代码——希望在接下来的一两天内看看。但是你看过this example吗?它相当健壮。我相信@Xavier 也是。
标签: javascript d3.js dc.js crossfilter