【问题标题】:Dynamically Add Rows in Google Visualization API (JavaScript)在 Google Visualization API (JavaScript) 中动态添加行
【发布时间】:2014-05-30 20:40:44
【问题描述】:

我正在开发一个 ASP.NET MVC 3 项目,该项目需要我通过用户输入上传 a.xls / .xlsx,将其加载到 DataTable 中并将其可视化放置在视图中。

听起来很简单......

我能够创建 DataTable 并将对象传递回视图,但是我无法通过 Google 的可视化 API 在视图上呈现数据表——我看到的所有示例都需要静态表示的字段,即:

var data = new google.visualization.DataTable();
data.addColumn('string', 'Task');
data.addColumn('number', 'Hours per Day');
data.addRows([
  ['Work', 11],
  ['Eat', 2],
  ['Commute', 2],
  ['Watch TV', 2],
  ['Sleep', {v:7, f:'7.000'}]
]);

但是,由于我的应用程序正在接受用户输入,因此列标题、维度和内容都是动态的。我正在寻找一种动态添加数据的方法。这是我目前拥有的代码,其中 Model 是传入的 DataTable:

@model System.Data.DataTable
@using GridMvc.Html
@{
    ViewBag.Title = "File Upload";
    <h2>@ViewBag.Message</h2>
}

<html>
  <head>
    <script type='text/javascript' src='https://www.google.com/jsapi'></script>
    <script type='text/javascript'>
        google.load('visualization', '1', { packages: ['table'] });
        google.setOnLoadCallback(drawTable);
        function drawTable( Model ) {
            var data = new google.visualization.DataTable();
            var numRows = Model.Rows.Count;
            var numCols = Model.Rows[0].Count;

            for (var i = 0; i < numCols; i++)
                data.addColumn('string', Model.Rows[0].ItemArray[i]);

            for (var i = 1; i < numRows; i++)
                data.addRow(Model.Rows[i].ItemArray);         

            //data.addRows([['2967773', '13-1014428', '', 'Not Recommended -Internship', '7- Not Recommended',
            //                'University 1', '', '', '', '', '', '', '' ]]);

            var table = new google.visualization.Table(document.getElementById('table_div'));
            table.draw(data, { showRowNumber: true });
        }
    </script>
  </head>

  <body>
    <div id='table_div'></div>
  </body>
  <p>Done</p>
</html>

有人知道怎么做吗? 提前致谢!

【问题讨论】:

  • 仅供参考,ASP.net DataTable 与 Google Visualization API DataTable 不同。如果要使用 ASP.net DataTable,则需要将其内容解析为 Visualization API DataTable。您可能想研究在服务器端创建兼容的对象并将其输出为 JSON 字符串。

标签: c# javascript asp.net asp.net-mvc-3 google-visualization


【解决方案1】:

正如上面的评论所提到的,来自 C# 的 DataTables 与 Google API 中的 DataTables 不同。我最终找到了处理此问题的第三方库 (Example),并将以下内容传递到 viewbag:

ViewBag.Data = new Bortosky.Google.Visualization.GoogleDataTable(ConvertTable( DATA )).GetJson();

【讨论】:

    猜你喜欢
    • 2012-03-02
    • 1970-01-01
    • 1970-01-01
    • 2011-05-10
    • 1970-01-01
    • 2023-03-06
    • 2021-12-16
    • 2019-11-09
    • 2012-03-14
    相关资源
    最近更新 更多