DotNet.Highcharts:未按正确日期绘制成本

我正在创建一个使用两个表中的数据的DotNet.Highcharts图表:支出和收入。 我正在使用SQL语句为每个语句创建一个DataTable 。 第一个(用于Incomings)称为Dt包含IncCostIncDate 。 名为Dt2的第二个(支出)包含ExpCostExpCost

我可以针对IncDate绘制针对IncDateExpCost 。 当我尝试连接IncDateIncDate (最终)时出现问题,因为IncCostExpCost的成本是针对(最终)中日期的位置绘制的,而不是与其相关的实际日期。

以下是我用来创建每个DataTable的调用:

 SqlDataAdapter Adp = new SqlDataAdapter("select CONVERT(DATETIME, IncDate, 103) AS IncDate, SUM(IncCost) AS IncCost from Incomings GROUP BY CONVERT(DATETIME, IncDate, 103) ORDER BY CONVERT(DATETIME, IncDate, 103)", con); SqlDataAdapter Adp2 = new SqlDataAdapter("select CONVERT(DATETIME, ExpDate, 103) AS ExpDate, SUM(ExpCost) AS ExpCost from Expenditures GROUP BY CONVERT(DATETIME, ExpDate, 103) ORDER BY CONVERT(DATETIME, ExpDate, 103)", con); 

这是从数据表调用这些中的每一个的代码

 var dateArr = Dt.AsEnumerable().Select(r => r.Field("IncDate")).ToArray(); var objectArr = Dt.AsEnumerable().Select(r => r.Field("IncCost")).ToArray(); var dateArr2 = Dt2.AsEnumerable().Select(r => r.Field("ExpDate")).ToArray(); var objectArr2 = Dt2.AsEnumerable().Select(r => r.Field("ExpCost")).ToArray(); var res = dateArr.Concat(dateArr2).ToArray(); var final = res.Select(d => d.ToString(@"dd\/MM\/yyyy")).ToArray(); 

这是我用来创建我的高图的代码:

 Highcharts chart = new Highcharts("graph") .SetTitle(new Title { Text = "Incoming Stats" }) .SetXAxis(new[] { new XAxis { Categories = final } }) .SetYAxis(new YAxis { Title = new YAxisTitle { Text = "Amount Incoming" } }) .SetSeries(new[] { new Series { Name = "inc", Data = new Data(objectArr)}, new Series { Name = "exp", Data = new Data(objectArr2) } }); 

情节1

正如您所看到的,系列正在创建,但它们是根据数组中的数字绘制的,而不是与应链接的日期相对应。

我不确定我对解决方案有多近或多远,但感谢任何帮助。 这是我的incomings数据表

这是我的incomings数据表Dt的数据

这是我的支出数据

这是我的支出数据表(Dt2)的数据

真的不知道该如何去做。 任何信息都非常感谢

您的Y值与X值完全断开。 为了实现您的目标,您需要重新构建数据,如下所示:

  DateTime dt = new DateTime(2016, 2, 27); Highcharts chart = new Highcharts("graph") .SetTitle(new Title { Text = "Incoming Stats" }) .SetXAxis(new XAxis { Type = AxisTypes.Datetime }) .SetYAxis(new YAxis { Title = new YAxisTitle { Text = "Amount Incoming" } }) .SetSeries(new[] { new Series { Name = "inc", Data = new Data(new object[,] { {dt , 23 }, {dt.AddDays(1) , 223 }, {dt.AddDays(2) , 51 }, {dt.AddDays(11) , 200 }, }) }, new Series { Name = "exp", Data = new Data(new object[,] { {dt.AddDays(5) , 100 }, {dt.AddDays(6) , 23 }, {dt.AddDays(11) , 23 }, {dt.AddDays(19) , 35 }, {dt.AddDays(35) , 288 }, }) } }); 

在此处输入图像描述

编辑:如何动态地做:

  object[,] data1 = new object[Dt.Rows.Count, 2]; for (int i = 0; i < Dt.Rows.Count; i++) { data1[i, 0] = Dt.Rows[i]["IncDate"]; data1[i, 1] = Dt.Rows[i]["IncCost"]; } object[,] data2 = new object[Dt2.Rows.Count, 2]; for (int i = 0; i < Dt2.Rows.Count; i++) { data2[i, 0] = Dt2.Rows[i]["ExpDate"]; data2[i, 1] = Dt2.Rows[i]["ExpCost"]; } Highcharts chart = new Highcharts("graph") .SetTitle(new Title { Text = "Incoming Stats" }) .SetXAxis(new XAxis { Type = AxisTypes.Datetime }) .SetYAxis(new YAxis { Title = new YAxisTitle { Text = "Amount Incoming" } }) .SetSeries(new[] { new Series { Name = "inc", Data = new Data(data1) }, new Series { Name = "exp", Data = new Data(data2) } }); 

在此处输入图像描述

从数据库中检索数据:

在此处输入图像描述

在此处输入图像描述