Я использую элемент управления ASP.NET Chart для столбчатой диаграммы с DataBindCrossTable. Я получаю общий объем продаж за текущий и предыдущий год в зависимости от местоположения.Я не знаю количество веток заранее, и количество ветвей может меняться в зависимости от условия в запросе.Мой образец данных, который я получаю из запроса, выглядит следующим образом:
- Филиал TotalSale Год
- Америка 50 2018
- Америка 40 2017
- Британия 352018
- Британия 20 2017
- Китай 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