javascript - google.visualization.DataTable() 定位分页div

标签 javascript datatable google-visualization visualization

我在 Google 数据表中有此数据:

enter image description here

我想将页面按钮放置在表格顶部。但在我看来谷歌不支持这样做。你们知道有什么最好的方法吗?

enter image description here

这是我现在正在尝试的 jsfiddle 链接。

jsfiddle.net/Kwangsub_Ahn/ohh8397h/7/

HTML
<script type="text/javascript" src="https://www.google.com/jsapi"></script>
<div id="table_div"></div>

JAVASCRIPT
google.load("visualization", "1.1", {
    packages: ["table"]
});
google.setOnLoadCallback(drawTable);

function drawTable() {
    var data = new google.visualization.DataTable();
    data.addColumn('string', 'Date');
    data.addColumn('string', 'Project');
    data.addColumn('string', 'System');
    data.addColumn('number', 'No');
    data.addRows([
        ['7/31/2014', 'project1', 'system1', 5],
        ['5/2/2014', 'project2', 'system2', 2],
        ['5/2/2014', 'project1', 'system1', 5],
        ['1/31/2014', 'project3', 'system4', 1]
   ]);

    var view = new google.visualization.DataView(data);

    var id = document.getElementById('table_div');
    var table = new google.visualization.Table(id);

    table.draw(view, {
        allowHtml: true,
        width: '100%',
        height: '100%',
        page: 'enable',
        pageSize: 10
    });
}

最佳答案

1)没有任何可以设置的标准选项,

但您可以手动移动按钮行,

当图表的 'ready''page' 事件触发时

    google.visualization.events.addListener(table, 'ready', moveButtons);
    google.visualization.events.addListener(table, 'page', moveButtons);

    function moveButtons() {
      var content = id.children[0].children[1];
      var parent = content.parentNode;
      parent.insertBefore(content, parent.children[0]);
    }
<小时/>

2)图表将在'sort''page'事件发生后将按钮移回底部...

'page' 事件使用 moveButtons 效果很好,

但需要以不同方式处理'sort'

  • 如果您不想允许排序,只需设置以下选项,并且不要附加事件...

排序:'事件'

  • 如果您想要允许排序,您仍需要设置上述选项,
    但您还必须手动对表格进行排序

排序:'事件'

google.visualization.events.addListener(table, 'sort', sortTable);

function sortTable(sortOptions) {
  data.sort([{
    column: sortOptions.column,
    desc: !sortOptions.ascending
  }]);

  options.sortColumn = sortOptions.column;
  options.sortAscending = sortOptions.ascending;

  table.draw(data, options);
}

请参阅以下工作片段...

google.charts.load('current', {
  callback: drawTable,
  packages: ['table']
});

function drawTable() {
    var data = new google.visualization.DataTable();
    data.addColumn('string', 'Date');
    data.addColumn('string', 'Project');
    data.addColumn('string', 'System');
    data.addColumn('number', 'No');
    data.addRows([
        ['7/31/2014', 'project1', 'system1', 5],
        ['5/2/2014', 'project2', 'system2', 2],
        ['5/2/2014', 'project1', 'system1', 5],
        ['1/31/2014', 'project3', 'system4', 1]
    ]);

    var options = {
        allowHtml: true,
        width: '100%',
        height: '100%',
        page: 'enable',
        pageSize: 2,
        sort: 'event'
    };


    var id = document.getElementById('table_div');
    var table = new google.visualization.Table(id);

    google.visualization.events.addListener(table, 'ready', moveButtons);
    google.visualization.events.addListener(table, 'page', moveButtons);

    function moveButtons() {
      var content = id.children[0].children[1];
      var parent = content.parentNode;
      parent.insertBefore(content, parent.children[0]);
    }

    google.visualization.events.addListener(table, 'sort', sortTable);

    function sortTable(sortOptions) {
      data.sort([{
        column: sortOptions.column,
        desc: !sortOptions.ascending
      }]);

      options.sortColumn = sortOptions.column;
      options.sortAscending = sortOptions.ascending;

      table.draw(data, options);
    }

    table.draw(data, options);
}
<script src="https://www.gstatic.com/charts/loader.js"></script>
<div id="table_div"></div>

<小时/>

注意:根据release notes,建议使用较新的库loader.js(相对于jsapi)。 ...

The version of Google Charts that remains available via the jsapi loader is no longer being updated consistently. Please use the new gstatic loader.js from now on.

这只会更改 load 语句,请参阅上面的代码片段...

关于javascript - google.visualization.DataTable() 定位分页div,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43593945/

相关文章:

Javascript图表点击打开新的

javascript - 从绑定(bind)到事件的另一个函数调用绑定(bind)到事件的函数不起作用

javascript - 推迟小部件 js 的执行,直到页面完全加载

javascript - slimscroll 滚动条不可见

jquery - 数据表之外的分页控制

javascript - 如何从使用 Google Charts 生成的组合图表中删除网格线

javascript - required 属性不适用于表单,e.preventDefault 不适用于提交按钮

c# - 如何按列格式化数据表行数据

c# - 如何从 DataTable 对象中知道行索引

javascript - 谷歌动态图表不工作