Google Visualization ChartWrapper 以编程方式设置单元格值

当我点击 Google 可视化 ChartWrapper 表中的订单项时,我想以编程方式更新所点击行中的产品值。

我被困在这里:dataTable.setvalue(row,col,valNew);

根据 documentation,我应该能够使用 setvalue 更新数据中的值。我收到错误“setvalue 不是函数”。

希望有人能指出我正确的方向...

到目前为止,这是我的代码。问题出在 selectHandler_table_db 函数中。

google.charts.load('current',{
  packages: ['table','controls']
}).then(function() {

  var data = new google.visualization.DataTable();
  data.addColumn('date','Date');
  data.addColumn('string','Product');
  data.addColumn('number','Quantity');

  var dt1 = new Date(moment().endOf('month').subtract(3,'month'));
  var dt2 = new Date(moment().endOf('month').subtract(2,'month'));
  var dt3 = new Date(moment().endOf('month').subtract(1,'month'));
  var dt4 = new Date(moment().startOf('month'));
  var dt5 = new Date(moment().startOf('month').add(1,'day'));
  var dt6 = new Date(moment().startOf('month').add(2,'day'));

  data.addRows([
    [dt1,'a',100],[dt2,'b',200],[dt3,300],[dt4,400],[dt5,500],[dt6,600],]);

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

  example_dashboard(view);

});

function example_dashboard(view) {

  var dashboard = new google.visualization.Dashboard(document.getElementById('div_dashboard'));

  var categoryPicker1 = new google.visualization.ControlWrapper({
    controlType: 'CategoryFilter',containerId: 'div_categoryPicker1',options: {
      filterColumnIndex: view.getcolumnIndex('Product'),matchType: 'any',ui: {
        labelStacking: 'vertical',allowTyping: false,allowMultiple: false,allowNone: true
      }
    }
  });

  var table_db = new google.visualization.ChartWrapper({
    chartType: 'Table',containerId: 'div_table',options: {
      width: '100%',height: 'auto',}
  });

  dashboard.bind(categoryPicker1,table_db);
  dashboard.draw(view);

  google.visualization.events.addListener(table_db,'select',selectHandler_table_db);

  function selectHandler_table_db() {

    let chartWrapper = table_db.getchart();
    let dataTable = table_db.getDataTable();
    let row = chartWrapper.getSelection()[0].row;
    let col = 1;
    let valNew = "c";

    //This errors dataTable.setvalue is not a function
    dataTable.setvalue(row,valNew);

    chartWrapper.draw();

  } //END selectHandler_table
} //END example_dashboard(){
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.22.1/moment.min.js"></script>
<script src="https://www.gstatic.com/charts/loader.js"></script>
<div id='div_dashboard'>
  <div id='div_categoryPicker1'></div>
  <div id="div_table"></div>
</div>

jonewuc999 回答:Google Visualization ChartWrapper 以编程方式设置单元格值

出现错误是因为您使用的是DataView来绘制Dashboard,
这是从 ChartWrapper 返回的对象,而不是 DataTable。

你可以通过传递数据表来解决,

example_dashboard(data);  // use data table here

您似乎没有使用视图修改数据。
或者如果该代码未包含在此处,
在绘制仪表板之前,您可以将 DataView 转换为 DataTable...

example_dashboard(view.toDataTable());  // convert view to DataTable
本文链接:https://www.f2er.com/13419.html

大家都在问