【发布时间】:2020-11-30 09:30:55
【问题描述】:
我尝试通过Vb.Net制作图表,似乎不行。这是我的编码:
Private Sub btn_Rate_Click(sender As Object, e As EventArgs) Handles btn_Rate.Click
Label37.Visible = True
Label39.Visible = True
Label48.Visible = True
Label49.Visible = False
Label51.Visible = False
Label52.Visible = False
Label37.Text = "The Chart of " & Label38.Text & " by Rate of Incidents "
Label48.Text = "From" & " " & Label42.Text & " " & "to" & " " & Label45.Text
If DropDownList13.SelectedIndex = -1 Then
Label39.Text = Label40.Text
Else
Label39.Text = Label40.Text & Label41.Text
End If
btn_Print.Visible = True
Dim dtRate As DataTable = New DataTable("dtRates")
For Each cell As TableCell In gvRate.HeaderRow.Cells
dtRate.Columns.Add(cell.Text.Trim())
Next
For Each row As GridViewRow In gvRate.Rows
dtRate.Rows.Add()
For i As Integer = 0 To row.Cells.Count = -1
dtRate.Rows(row.RowIndex)(i) = row.Cells(i).Text.Trim()
Next
Next
Dim departments As List(Of String) = New List(Of String)()
departments = (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
For Each department As String In departments
Dim UserDepartment = department
Dim X As Integer()
X = (From p In dtRate.AsEnumerable()
Where p.Field(Of String)("Department") = UserDepartment
Order By p.Field(Of String)("Period_Shown")
Select Convert.ToInt32(p.Field(Of String)("Period_Shown"))).ToArray()
Dim Y As Decimal()
Y = (From p In dtRate.AsEnumerable()
Where p.Field(Of String)("Department") = UserDepartment
Order By p.Field(Of String)("Period_Shown")
Select Convert.ToDecimal(p.Field(Of String)("Rate_Int"))).ToArray()
RateChart.Series.Add(New Series(department))
RateChart.Series(department).IsValueShownAsLabel = True
RateChart.Series(department).BorderWidth = 3
RateChart.Series(department).ChartType = SeriesChartType.Line
RateChart.Series(department).Points.DataBindXY(X, Y)
Next
RateChart.Legends(0).Enabled = True
End Sub
有两个错误消息。一个是In Line24 其中 p.Field(Of String)("department") = 部门 误差测量: 在查询表达式中使用迭代变量“department”可能会产生意外结果。相反,在循环中创建一个局部变量,并为其分配迭代变量的值。
另一个是In Line41 RateChart.Legends(0).Enabled = True 误差测量: 指数超出范围。必须为非负数且小于集合的大小。参数名称:索引
【问题讨论】: