【问题标题】:I've been trying to build a dc.js datatable with pagination.How to fix 'Pagination for dc.table'?我一直在尝试使用分页构建 dc.js 数据表。如何修复“dc.table 的分页”?
【发布时间】: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


【解决方案1】:

看看这个项目中的代码:https://tttp.eu我有分页和可排序的列

相关部分

 function drawPagination(){

  var ofs = 0, pag = 10;
  chart.on('preRedraw.pagination', display);

  function display() {
      d3.select('#begin')
          .text(1+ofs);
      d3.select('#end')
          .text(ofs+pag);
      d3.selectAll('#next,#last')
          .attr('disabled', ofs+pag>=graphs.total.data() ? 'true' : null);
      d3.selectAll('#first,#prev')
          .attr('disabled', ofs<=0 ? 'true' : null);
      d3.select('#size').text(graphs.total.data());
  }

  function update() {
      chart.beginSlice(ofs);
      chart.endSlice(ofs+pag);
      chart.redraw();
  }

  function next() {
      ofs += pag;update();
  }
  function prev() {
      ofs -= pag;
      if (ofs <=0) {
        d3.selectAll("#prev,#first").attr("disabled",true);
        ofs=0;
      }
      update();
  }

  d3.selectAll("#pagination")
    .html (`
        Showing <span id="begin"></span>-<span id="end"></span> of <span id="size"></span><span class="btn-group">
        <button id="first" disabled="disabled" class="btn btn-primary"><i class="glyphicon glyphicon-fast-backward"></i>First</button>
        <button id="prev" disabled="disabled" class="btn btn-primary"><i class="glyphicon glyphicon-step-backward"></i>Prev</button>
        <button id="next" class="btn btn-primary">Next<i class="glyphicon glyphicon-step-forward"></i></button>
        <button id="last" class="btn btn-primary">Last<i class="glyphicon glyphicon-fast-forward"></i></button>
        </span>
    `);
  d3.select("#first").on("click",function(){ofs=0;update()});
  d3.select("#last").on("click",function(){ofs=graphs.total.data()-pag;update()});
  d3.select("#prev").on("click",prev);
  d3.select("#next").on("click",function(){ofs +=pag;update()});

  update();
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-07
    • 2017-07-27
    • 2020-09-21
    • 1970-01-01
    • 2019-05-21
    相关资源
    最近更新 更多