首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SQL Server的图表生成问题

SQL Server的图表生成问题
EN

Stack Overflow用户
提问于 2015-02-21 03:42:06
回答 1查看 197关注 0票数 2

我正在尝试根据Server中表中的数据构建饼图,下面是我的代码,包括ASP.NET和c#:

ASP.NET

代码语言:javascript
复制
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js" type="text/javascript"></script>
<script type="text/javascript" src="https://www.google.com/jsapi"></script>
<script type="text/javascript">

function drawChart() {
        var options = {
            title: 'My Bills'
        };
        $.ajax({
            type: "POST",
            url: "MyPage.aspx/GetChartData",
            data: '{}',
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            success: function (r) {
                var data = google.visualization.arrayToDataTable(r.d);
                var chart = new google.visualization.PieChart($("#chart")[0]);
                chart.draw(data, options);
            },
            failure: function (r) {
                alert("Failure");
            },
            error: function (r) {
                alert("Error");
            }
        });
    }

C#

代码语言:javascript
复制
 [WebMethod]
    public static List<object> GetChartData()
    {
        string Chartquery = "SELECT a.[amount] AS 'Amount', DATENAME(Month,a.[myDate]) +' '+ convert(varchar(4),Year(a.[myDate])) As 'Month Year' "
            + "FROM [myTable] a "
            + "left join [mySecondTable] b on a.[ID] = b.[ID] "
            + "left join [myThirdTable] c on c.[code] = b.[code] "

            + "WHERE c.[myName] = John Doe";

        String strConnString = ConfigurationManager.ConnectionStrings["myConnection"].ToString();
        List<object> chartData = new List<object>();

        chartData.Add(new object[]
        {
            "Amount", "Month Year"
        });

        using (SqlConnection con = new SqlConnection(strConnString))
        {
            using (SqlCommand cmd = new SqlCommand(Chartquery))
            {
                cmd.CommandType = CommandType.Text;
                cmd.Connection = con;
                con.Open();

                using (SqlDataReader sdr = cmd.ExecuteReader())
                {
                    while (sdr.Read())
                    {
                        chartData.Add(new object[]
                        {
                            sdr["Amount"].ToString(), sdr["Month Year"].ToString()
                        });
                    }
                }
                con.Close();
                return chartData;
            }
        }
    }

C#代码准确地返回了它应该返回的内容,我已经调试过它,它工作得很好。我的程序编译、构建和运行,但是当它加载页面时,我在页面上得到了一个错误,上面写着Pie chart should have a first column of type string。所以我猜这和ASP代码有关。

我知道我发布了很多代码,但我想提供一切,让我更好地了解我在做什么,并让你们指出任何错误。

关于如何修复Pie chart should have a first column of type string的上述错误的建议

编辑:

我在while循环中添加了.ToString(),它用字符串解决了这个问题。现在页面加载时没有错误,但就像图表没有填充数据一样,尽管我的return chartData正在返回数据.在我的页面上唯一出现的是图表标题

有什么建议吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-02-21 06:30:35

你写的地方

代码语言:javascript
复制
chartData.Add(new object[]
{
    sdr["Amount"].ToString(), sdr["Month Year"].ToString()
});

将其更改为

代码语言:javascript
复制
chartData.Add(new object[]
{
    sdr["Month Year"].ToString(), sdr["Amount"]
});

这应该能解决问题。另外,更改标题行!

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28641842

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档