google.visualisation.DataTable()定位分页div [英] google.visualisation.DataTable() positioning pagination div

查看:147
本文介绍了google.visualisation.DataTable()定位分页div的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在Google DataTable中拥有这些数据:



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





  jsfiddle.net/Kwangsub_Ahn/ohh8397h/7/ 
这里是jsfiddle链接我正在尝试的内容。
HTML
< script type =text / javascriptsrc =https://www.google.com/jsapi>< / script>
< div id =table_div>< / div>

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

函数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
});


解决方案

/ strong>没有任何标准选项可以设置,

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

图表的'准备好''页面'事件触发

  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''页面'事件之后将按钮移回底部...

使用 moveButtons 用于'页面' event works fine,



但需要处理'sort'不同于


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



  • $ sort:'event'



    <如果您希望允许排序,则可以使用ul>
  • ,但您仍然需要设置上述选项 -

    ,但是您还必须手动处理排序表



sort:'event'

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

函数sortTable(sortOptions){
data.sort([{
列: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);函数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>< / div>< / code&

根据 loader.js (vs jsapi )。 //developers.google.com/chart/interactive/docs/release_notesrel =nofollow noreferrer>发布说明 ...


通过 jsapi 加载器保持可用的Google Charts的版本不再一致地更新。请从现在开始使用新的gstatic loader.js

这只会改变加载语句,请参阅上面的代码片段...

I have this data in a Google DataTable:

And I want to position the page buttons on top of the table. But it seems to me Google doesn't support to do this. Is there any best approach do you guys know?

HERE IS jsfiddle link what I am trying now.

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) there aren't any standard options you can set,

but you can move the button row manually,

when the chart's 'ready' and 'page' events fire

    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) the chart will move the buttons back to the bottom after the 'sort' and 'page' events...

using moveButtons for the 'page' event works fine,

but need to handle 'sort' differently

  • if you don't want to allow sorting, simply set the following option, and don't attach an event...

sort: 'event'

  • if you want to allow sorting, you'll still need to set the above option,
    but you'll also have to handle manually sorting the table

sort: 'event'

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);
}

see following working snippet...

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>


note: recommend using the newer library loader.js (vs. jsapi), according to the release notes...

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.

this will only change the load statement, see above snippet...

这篇关于google.visualisation.DataTable()定位分页div的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆