Google饼图在Asp.Net MVC的视图页面上无法正确显示

时间:2015-09-19 12:52:45

标签: asp.net-mvc charts google-visualization reporting

我在Google Pie Chart上显示view page似乎有问题。它似乎无法正确显示data中的Pie Chart并且我不完全确定原因,我尝试更改dataColumn的代码,但最终无法显示什么都没有。所以我还原了...... query确实有效,正在从数据库中提取正确的数据。

我对报道还是比较新的,所以如果有人能提出解决方案我会非常感激!

我使用razor syntax在视图中完成了所有操作。如果需要任何其他代码,请告诉我们。

查看页码:

@using WebMatrix.Data;
@using WebMatrix.WebData;


@{
    var db = Database.Open("HealthContext");

    String rows = "";

    var Query = ("SELECT Hospital.Name,Hospital.Province,Count([Order].OrderID) AS Orders FROM Hospital,[Order] WHERE Hospital.HospitalID = [Order].HospitalID GROUP BY Hospital.Name,Hospital.Province;");

    var AppQuery = db.Query(Query);


    List<string> rowsList = new List<string>();

    foreach (var item in AppQuery)
    {
        rowsList.Add("['" + item.Name + "','" + item.Orders + "']");


    };

    rows = String.Join(", ", rowsList);

}

<h2>PieChart1</h2>


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

        var data = new google.visualization.DataTable();

        data.addColumn('string', 'Name');     
        data.addColumn('string', 'Orders');
        data.addRows([
            @Html.Raw(rows)]
        );

        var options = {
            title: 'Orders Per Hospital'
        };

        var chart = new google.visualization.PieChart(document.getElementById('piechart'));

        chart.draw(data, options);
    }
</script>

报告的显示方式:

enter image description here

1 个答案:

答案 0 :(得分:1)

没有看到数据@Html.Raw(rows)产生,肯定很难回答。

但是,String似乎是订单而不是Number

我首先要改变:

rowsList.Add("['" + item.Name + "','" + item.Orders + "']");

为:

rowsList.Add("['" + item.Name + "'," + item.Orders + "]");

    data.addColumn('string', 'Name');     
    data.addColumn('string', 'Orders');
    data.addRows([
        @Html.Raw(rows)]
    );

要:

    data.addColumn('string', 'Name');     
    data.addColumn('number', 'Orders');
    data.addRows([
        @Html.Raw(rows)]
    );