Javascript 谷歌饼图未在broser中显示

Javascript 谷歌饼图未在broser中显示,javascript,c#,.net,google-visualization,Javascript,C#,.net,Google Visualization,我试图从列表对象填充数据表,然后将结果显示在饼图中。由于某种原因,我无法确定饼图没有显示在浏览器中(空白页)。下面是我的代码。是否有人可以尝试运行此代码并确定是错误!。。。因为我不能确定我错了 默认值为.aspx <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XH

我试图从列表对象填充数据表,然后将结果显示在饼图中。由于某种原因,我无法确定饼图没有显示在浏览器中(空白页)。下面是我的代码。是否有人可以尝试运行此代码并确定是错误!。。。因为我不能确定我错了

默认值为.aspx

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <script type="text/javascript" src="https://www.google.com/jsapi"></script>
    <script type="text/javascript">
        google.load("visualization", "1", { packages: ["corechart"] });
        google.setOnLoadCallback(drawChart);
        function drawChart(dataValues) {

            var data = new google.visualization.DataTable();
            data.AddColumn('string', 'Locality');
            data.AddColumn('number', 'Frequency');

            for (var i = 0; i < dataValues.length; i++) {
                data.AddRow(dataValues[i].aString, dataValues[i].anInt);
            }

            var options = { 'title': 'Pie Chart Test',
                'width': 900,
                'height': 500
            };

               var chart =  new google.visualization.PieChart(document.getElementById('piechart'));
               chart.draw(data, options);
        }
    </script>
  </head>
  <body>
    <div id="piechart" style="width: 900px; height: 500px;"></div>
  </body>
</html>

load(“可视化”、“1”、{packages:[“corechart”]});
setOnLoadCallback(drawChart);
函数绘图图(数据值){
var data=new google.visualization.DataTable();
data.AddColumn('string','Locality');
data.AddColumn('number','Frequency');
对于(var i=0;i
代码隐藏

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.Script.Serialization;

public partial class _Default : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            List<Items> dataList = new List<Items>();
            dataList.Add(new Items("A", 10));
            dataList.Add(new Items("B", 20));
            dataList.Add(new Items("C", 30));

            JavaScriptSerializer jss = new JavaScriptSerializer();

            ClientScript.RegisterStartupScript(this.GetType(), "Test", string.Format("<script type=\"text/javascript\">drawVisualization({0});</script>", jss.Serialize(dataList)));
        }
    }

    public class Items
    {
        public string aString = "";
        public int anInt = 0;

        public Items(string _aString, int _anInt)
        {
        aString = _aString;
        anInt = _anInt;
        }
    }
}
使用系统;
使用System.Collections.Generic;
使用System.Linq;
使用System.Web;
使用System.Web.UI;
使用System.Web.UI.WebControl;
使用System.Web.Script.Serialization;
公共部分类\u默认值:System.Web.UI.Page
{
受保护的无效页面加载(对象发送方、事件参数e)
{
如果(!IsPostBack)
{
List dataList=新列表();
添加(新项目(“A”,10));
增加(新项目(“B”,20));
添加(新项目(“C”,30));
JavaScriptSerializer jss=新的JavaScriptSerializer();
RegisterStartupScript(this.GetType(),“Test”,string.Format(“drawVisualization({0});”,jss.Serialize(dataList));
}
}
公共类项目
{
公共字符串aString=“”;
公共INTANIT=0;
公共项目(字符串、整数)
{
收敛=收敛;
anInt=\u anInt;
}
}
}

谢谢

JavaScript区分大小写。方法名为和,但您使用的是
.AddColumn()
.AddRow()
。检查JavaScript控制台是否有错误。您应该会发现一条消息,上面说
未定义不是函数

.addRow()
方法将数组作为其参数,但您要传入两个标量值。用方括号括起来:
data.addRow([dataValues[i].aString,dataValues[i].anInt])

您还可能在使用注册表StartupScript()时遇到问题。
。启动脚本可能在可视化包加载完成之前运行。相反,我会将该值嵌入页面上的隐藏字段中,并从脚本中读取该值

<asp:HiddenField runat="server" ID="ChartData" />

受保护的无效页面加载(对象发送方,事件参数e)
{
如果(!IsPostBack)
{
List dataList=新列表();
添加(新项目(“A”,10));
增加(新项目(“B”,20));
添加(新项目(“C”,30));
JavaScriptSerializer jss=新的JavaScriptSerializer();
this.ChartData.Value=jss.Serialize(dataList);
}
}
函数绘图图(){
var dataValues=JSON.parse(document.getElementById(“”.value);
//函数的其余部分已写入
}
应用了所有更改的代码段:

google.load(“可视化”,“1”,“{packages:[“corechart”]});
setOnLoadCallback(drawChart);
函数绘图图(){
var dataValues=JSON.parse(document.getElementById(“ChartData”).value);
var data=new google.visualization.DataTable();
data.addColumn('string','Locality');
data.addColumn('number','Frequency');
对于(var i=0;i


谢谢你,吉莉。我更正了方法名,但现在只得到标题和一个“未找到数据”。@user2307236-我想可能会发生这种情况。我已更新了答案以解决最可能发生的问题。我进行了额外编辑,模拟服务器组件,并在修复了您调用
.addRow()
的方式的问题后,我的代码段现在显示饼图。我是否只需要复制“”然后把这条线粘贴到身体上,或者我遗漏了什么,因为它给了我一个错误。我设法让吉莉画了这个图表。这是在客户端单击按钮动态绘制图表的第一步。Tks很多。你不应该改变你的问题来反映答案的更正。这会让未来的游客感到困惑。他们可能会想,“为什么这个答案说方法名是错误的?在我看来是对的!”。如果你的问题的答案只给了你一部分你需要的,留下评论,或者问一个全新的问题,只关注剩下的问题。