【问题标题】:How to update the underlying google datatable of a google visualization dashboard and refresh the dashboard view?如何更新谷歌可视化仪表板的底层谷歌数据表并刷新仪表板视图?
【发布时间】:2016-09-11 17:16:54
【问题描述】:

我使用 Google HTML 服务创建了一个 google 可视化仪表板。底层数据表 (jjdt) 由多个数据表(如 jadt2、fa)连接而成。

jjdt = google.visualization.data.join(jadt2,fa,'left',[[0,0]],[1,2,3,4,5,6,7,8,9,10,11],[2,3]);   

然后我创建了一个图表包装器 (finalTable) 以在仪表板中显示表格。

    finalTable = new google.visualization.ChartWrapper({
    'chartType': 'Table',
    'containerId': 'table-div',
    'options': {
      'showRowNumber': false, 
      'width': '100%', 
      'height': '100%', 
      'allowHtml': true, 
      'pageSize': 20
    }
  });

dashboard.bind(wwPicker, [finalTable]);
dashboard.draw(jjdt);

这些代码运行良好。

现在我想要做的是允许单击按钮将基础表 (jjdt) 中的某些单元格设置为新值并将其反映在仪表板上。但这并不像我想象的那么简单。

我尝试了两件事:

1) 使用javascript更新对应单元格(x,y)的jjdt表并调用finalTable.draw();

    jjdt.setCell(x,y,'New Value');
    finalTable.draw();

但这没有任何效果,也没有错误消息。

2) 我认为图表包装器可能创建了数据表的副本。所以我尝试取回那个数据表:

 var mydt = finalTable.getDataTable();
 mydt.setCell(x,y,'New Value');
 finalTable.draw();

我认为这是文档https://developers.google.com/chart/interactive/docs/reference#methods_4中描述的正确方法

但是,我收到一条错误消息,说 setCell 不是 mydt 的函数,即使我可以调用 mydt.getValue()。好像我的数据表“不知何故”是只读的?但它是 DataTable 而不是 DataView .. 为什么会这样?

【问题讨论】:

    标签: google-apps-script google-visualization google-datatable


    【解决方案1】:

    我尝试了 PaulH 的建议,但它仍然不起作用。

    但经过进一步挖掘,我终于找到了解决方案。问题是我调用 SetCell 的方式并没有更新单元格的“格式化值”。这就是为什么我什至认为我更新了表格单元格“值”,它的格式和以前一样。

    正确的做法是:

    jjdt.setCell(x,y,'New Value','New Display Value');
    

    这样只有“新显示值”会显示在表格图表中。但图表将根据“新值”进行排序。

    另外,要更新视图,似乎要么调用

    dashboard.draw(jjdt)
    

    finalTable.draw()
    

    会有同样的效果。所以我只用 finalTable.draw() 更新表格。

    希望这对其他人有所帮助。

    【讨论】:

      【解决方案2】:

      仪表板需要知道修改后的dataTable,所以我在您的解决方案中添加了一行1)

      jjdt.setCell(x,y,'New Value');
      dashboard.draw(jjdt); // added line
      finalTable.draw();
      

      解决方案 2) 不起作用,因为 getDataTable() 是 ChartWrapper 类的方法,它不是 Dashboard 类的方法,因此您的 “不是函数” 错误消息.

      【讨论】:

        猜你喜欢
        • 2017-07-09
        • 1970-01-01
        • 2015-05-25
        • 2012-01-19
        • 1970-01-01
        • 2015-12-22
        • 1970-01-01
        • 1970-01-01
        • 2018-03-05
        相关资源
        最近更新 更多