c# - 使用 ASP.net 将 Highcharts 连接到数据库

标签 c# mysql asp.net razor highcharts

我一直在尝试将我的 highcharts 图表连接到数据库,以便我可以获得实时数据。我一直在尝试连接的表称为 dbo.Answers_int。我遇到了麻烦。我的代码基于此网站 https://www.c-sharpcorner.com/UploadFile/1f3f2a/charting-in-mvc/

当我尝试加载页面时,highcharts 甚至没有出现。我没主意了。任何帮助将不胜感激。

ReportsController.cs:

    public class ReportsController : Controller{
    private HHDBEntities db = new HHDBEntities();

    public static DataTable GetQuestionSummary()
    {
        DataTable dt = new DataTable("ChartSummary");
        string query = "Select QuestionAns From [dbo].[Answers_int]";
        string connString = ConfigurationManager.ConnectionStrings["SampleMembershipDB"].ConnectionString;
        SqlConnection con = new SqlConnection(connString);
        //con.ConnectionString = "Data Source=.;" + "Initial Catalog=Transport;" + "Persist Security Info=True;";
        SqlCommand cmd = new SqlCommand();
        cmd.CommandText = query;
        //cmd.Connection = con;
        SqlDataAdapter da = new SqlDataAdapter(cmd);
        con.Open();
        da.Fill(dt);
        con.Close();
        return dt;

    }
    public class Summary
    {
        public double Item { get; set; }
        public string Value { get; set; }
    }

    public JsonResult ChartSummary()
    {
        List<Summary> lstSummary = new List<Summary>();

        foreach (DataRow dr in GetQuestionSummary().Rows)
        {
            Summary summary = new Summary();
            summary.Value = dr[0].ToString().Trim();
            summary.Item = Convert.ToDouble(dr[1]);
            lstSummary.Add(summary);

        }
        return Json(lstSummary.ToList(), JsonRequestBehavior.AllowGet);
    }

PieChart.cshtml:

    $(function () {
        $.ajax({
            url: 'Reports/PieChart',
            dataType: "json",
            type: "GET",
            contentType: 'application/json; charset=utf-8',
            async: false,
            processData: false,
            cache: false,
            delay: 15,
            success: function (data) {
                // alert(data);
                var series = new Array();
                for (var i in data) {
                    var serie = new Array(data[i].Value, data[i].Item);
                    series.push(serie);
                }
                DrawPieChart(series);
            },
            error: function (xhr) {
                alert('error');
            }
        });
    });
    function DrawPieChart(series) {
        $('#container').highcharts({

            chart: {
                plotBackgroundColor: null,
                plotBorderWidth: 1, //null,
                plotShadow: false
            },
            title: {
                text: ' Vehicle Summary'
            },
            tooltip: {
                pointFormat: '{series.name}: <b>{point.percentage:.1f}%</b>'
            },
            plotOptions: {
                pie: {
                    allowPointSelect: true,
                    cursor: 'pointer',
                    dataLabels: {
                        enabled: false
                    },
                    showInLegend: true
                }
            },
            series: [{
                type: 'pie',
                name: 'Task Status',
                data: series
            }]
        });
    }

最佳答案

您只能从数据库中获取一列。您将在示例中看到返回 2 列,其中一列是返回百分比的计算。看来您需要它来创建图表。

在本节中

foreach (DataRow dr in GetQuestionSummary().Rows)
{
    Summary summary = new Summary();
    summary.Value = dr[0].ToString().Trim();
    summary.Item = Convert.ToDouble(dr[1]);
    lstSummary.Add(summary);    
}

您可以看到需要一个 Item 和一个 Value。同样,您需要 2 列数据才能使用。

关于c# - 使用 ASP.net 将 Highcharts 连接到数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49310122/

相关文章:

c# - 客户端上的 10048 套接字错误?可能的原因?

mysql - Rails created_at 索引未使用索引

c# - 如何调整 Google RECAPTCHA 的大小

asp.net - 为什么在 Fiddler 请求中可见的 cookie 在 Request.Cookies 集合中不可用?

c# - UWP 网络安装 - “Error in parsing the app package.”

c# - 查询 Active Directory 的任务并行库(使用 DirectoryServices)

c# - C# 的对象缓存

MYSQL - 当 DO 存在和不存在时进行 SubSelect

mysql - 这种数据库类型有名称吗?

javascript - 无法在 Asp.Net RadioButtonList 项目选择上使用 Jquery 显示/隐藏 div?