首页 > 解决方案 > 创建多系列图表

问题描述

我想在 VB.NET 中制作一个多系列图表。多少系列取决于部门和从数据表中收集的数据,该数据表是从数据网格视图中收集的。

Department Period_Shown Rate_Int
EMW 2018 0.94
EMW 2019 0.55
ACH 2015 0.29
ACH 2016 0.52
ACH 2017 0.56
ACH 2018 0.63
ACH 2019 0.57

最后,图表只显示了一个系列,这与我的想法不同(即:部门'EMW'是系列1,部门'ACH'是系列2)。

下面是图表控件的源代码:

Dim dtRate As New DataTable("dtRate")
'Add columns to DataTable.
For Each cell As TableCell In GridView1.HeaderRow.Cells
    dtRate.Columns.Add(cell.Text)
Next
'Loop through the GridView and copy rows.
For Each row As GridViewRow In GridView1.Rows
    dtRate.Rows.Add()
    For i As Integer = 0 To row.Cells.Count - 1
        dtRate.Rows(row.RowIndex)(i) = row.Cells(i).Text
    Next
Next
Dim Departments As List(Of String) = (From p In dtRate.AsEnumerable() _
                               Select p.Field(Of String)("Department")).Distinct().ToList()
If RateChart.Series.Count() = 1 Then
    RateChart.Series.Remove(RateChart.Series(0))
End If
'Loop through the Departments.
For Each UserDepartment As String In Departments
    'Get the Shown_Period for each Department.
    Dim x As Integer() = (From p In dtRate.AsEnumerable() _
                          Where p.Field(Of String)("Department") = UserDepartment _
                          Order By p.Field(Of Integer)("Shown_Period") _
                          Select p.Field(Of Integer)("Shown_Period")).ToArray()
    'Get the Num_Int of Orders for each Department.
    Dim y As Integer() = (From p In dtRate.AsEnumerable() _
                          Where p.Field(Of String)("Department") = UserDepartment _
                          Order By p.Field(Of Integer)("Shown_Period") _
                          Select p.Field(Of Integer)("Num_Int")).ToArray()
    'Add Series to the Chart.
    RateChart.Series.Add(New Series(UserDepartment))
    RateChart.Series(UserDepartment).IsValueShownAsLabel = True
    RateChart.Series(UserDepartment).BorderWidth = 3
    RateChart.Series(UserDepartment).ChartType = SeriesChartType.Line
    RateChart.Series(UserDepartment).Points.DataBindXY(x, y)
Next
RateChart.Legends(0).Enabled = True
RateChart.Visible = True
btn_Print.Visible = True

谁能帮我解决它?

PS:一张表有多少部门并不固定。

标签: vb.netcharts

解决方案


推荐阅读