ASP.NET图表DataBindCrossTable显示错误的数据

时间:2019-02-10 06:23:36

标签: asp.net vb.net charts

我正在将ASP.NET Chart控件用于DataBindCrossTable的柱形图。我根据位置获得了本年度和上一年的总销售额。 我不知道分支的数量,分支的数量可以根据查询的条件而改变。 我从查询中获得的示例数据表如下:

  • 分支销售总年
  • 美国50 2018
  • 美国40 2017
  • 英国35 2018
  • 2017年20月20日英国
  • 中国120 2018
  • 中国68 2017
  • 丹麦20 2018
  • 印度100 2018
  • 印度50 2017
  • 西班牙129 2018
  • 西班牙23 2017

在这种情况下,因为丹麦只有一个 值,直到丹麦,它在图表中显示正确的数据,但在丹麦之后,图表显示错误的值,如丹麦其他国家的数据,并且数据的不匹配一直持续到最后。我知道问题是因为值单一。我能想到的解决方案是遍历数据表,检查是否有任何位置具有单个条目,然后为缺失的年份添加一个值为0的新行。

我想知道是否还有其他方法可以做到

这是我的图表的vb.net代码

Public Sub PopulateBranchesSale()
    Dim dtTotalSaleDetails As DataTable = Nothing
    Dim lsErr As String = ""
    Try
      cocDashBoard.FetchBranchesSale(csFranchise, csBranch, csDepartment, ciUserEmplCode, dtTotalSaleDetails, lsErr)

      Chart12.DataSource = dtTotalSaleDetails
      Chart12.Series(0).ChartType = DataVisualization.Charting.SeriesChartType.Column

      Chart12.ChartAreas("ChartArea12").AxisX.LabelStyle.Interval = 1
      Chart12.ChartAreas("ChartArea12").AxisX.MajorGrid.Enabled = False
      Chart12.ChartAreas("ChartArea12").AxisY.MajorGrid.Enabled = False

      Chart12.DataBindCrossTable(dtTotalSaleDetails.AsEnumerable, "Year", "Branch", "TotalSales", "Label=TotalSales")
      Chart12.DataBind()
    Catch ex As Exception
      Master.AlertMessageBox(ex.Message)
    End Try
  End Sub

0 个答案:

没有答案