Javascript 谷歌饼图未在broser中显示
我试图从列表对象填充数据表,然后将结果显示在饼图中。由于某种原因,我无法确定饼图没有显示在浏览器中(空白页)。下面是我的代码。是否有人可以尝试运行此代码并确定是错误!。。。因为我不能确定我错了 默认值为.aspxJavascript 谷歌饼图未在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
<%@ 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很多。你不应该改变你的问题来反映答案的更正。这会让未来的游客感到困惑。他们可能会想,“为什么这个答案说方法名是错误的?在我看来是对的!”。如果你的问题的答案只给了你一部分你需要的,留下评论,或者问一个全新的问题,只关注剩下的问题。