Javascript 谷歌图表不显示

Javascript 谷歌图表不显示,javascript,c#,html,asp.net,google-visualization,Javascript,C#,Html,Asp.net,Google Visualization,请确定为什么这些图表没有显示。此代码正在与另一个项目一起使用。我在一个新项目中使用了相同的代码,我只添加了母版页,但是现在没有显示图表 我只能看到一个空白的背景 HTML load(“可视化”、“1”、{packages:[“corechart”]}); load('visualization','1',{packages:['table']}); load('visualization','1.0',{'packages':['controls']}); setOnLoadCallback(

请确定为什么这些图表没有显示。此代码正在与另一个项目一起使用。我在一个新项目中使用了相同的代码,我只添加了母版页,但是现在没有显示图表

我只能看到一个空白的背景

HTML


load(“可视化”、“1”、{packages:[“corechart”]});
load('visualization','1',{packages:['table']});
load('visualization','1.0',{'packages':['controls']});
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
代码隐藏

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)
    {

    }

    //This is a method for testing, it is called from the button and then calls a method from the Utility class.
    public List<Items> getChartData()
    {
        List<Items> dataList = new List<Items>();
        dataList.Add(new Items("A", 110));
        dataList.Add(new Items("B", 120));
        dataList.Add(new Items("C", 30));
        dataList.Add(new Items("D", 150));
        dataList.Add(new Items("E", 210));
        dataList.Add(new Items("F", 310));
        JavaScriptSerializer jss = new JavaScriptSerializer();

        this.ChartData.Value = jss.Serialize(dataList);

        return dataList;
    }

    protected void Button1_Click(object sender, EventArgs e)
    {
        getChartData();
    }
}

public class Items
{
    public string location = "";
    public int frequency = 0;

    public Items(string location, int frequency)
    {
        this.location = location;
        this.frequency = frequency;
    }
}
使用系统;
使用System.Collections.Generic;
使用System.Linq;
使用System.Web;
使用System.Web.UI;
使用System.Web.UI.WebControl;
使用System.Web.Script.Serialization;
公共部分类\u默认值:System.Web.UI.Page
{
受保护的无效页面加载(对象发送方、事件参数e)
{
}
//这是一个用于测试的方法,它从按钮调用,然后从实用程序类调用一个方法。
公共列表getChartData()
{
List dataList=新列表();
添加(新项目(“A”,110));
添加(新项目(“B”,120));
添加(新项目(“C”,30));
添加(新项目(“D”,150));
增加(新项目(“E”,210));
添加(新项目(“F”,310));
JavaScriptSerializer jss=新的JavaScriptSerializer();
this.ChartData.Value=jss.Serialize(dataList);
返回数据列表;
}
受保护的无效按钮1\u单击(对象发送者,事件参数e)
{
getChartData();
}
}
公共类项目
{
公共字符串位置=”;
公共整数频率=0;
公共项目(字符串位置、整数频率)
{
这个位置=位置;
这个频率=频率;
}
}

非常感谢您提供示例帮助。

尝试在客户端查看源代码。Asp.net在id前面加上了Asp.net容器的名称,所以当您在客户端运行时,JSON.Parse(以及其他可能的字段)不一定具有您认为的id

查看详细说明。您可能需要更改如下内容:

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


我不确定这是否是您的问题,但在web浏览器中执行一个简单的“查看源代码”并检查html元素的ID应该可以告诉您这是否是问题。

基于ASP.Net过去的问题,我以前的回答是我的第一直觉。进一步查看代码后,我认为您可能误用了仪表板

  • 确保所有未绑定到控件的图表位于仪表板的div之外,但图表控件和图表的div位于仪表板内部
  • 如果使用仪表板将图表绑定到控件,则应而不是调用该图表的
    chart.draw()
    。仪表板将为您处理该图表的绘制
  • 您可能需要将仪表板绑定的图表声明为
    google.visualization.ChartWrapper
    ,而不是
    google.visualization.PieChart
    ,但我不确定这一点
我建议暂时废弃仪表板,并在没有仪表板的情况下测试整个系统。仪表盘比常规图表复杂一点

另外,作为补充说明,您可以通过向同一请求添加额外的包,通过一次调用加载所有google库


有关如何使用仪表板设置图表和控件的详细信息,请参阅。

是否尝试过任何调试?是,但没有给出错误。我不知道为什么会这样
<asp:HiddenField runat="server" ID="ChartData" ClientIDMode="Predictable" />