【问题标题】:How can I solve the problem on Create Multi-Series Chart如何解决创建多系列图表的问题
【发布时间】: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 误差测量: 指数超出范围。必须为非负数且小于集合的大小。参数名称:索引

【问题讨论】:

    标签: vb.net visual-studio-2010


    【解决方案1】:

    对于第二个错误;第 41 行:错误提示“索引超出范围”。这意味着您尝试使用无效值索引对象。

    【讨论】:

    • 我该如何解决这个问题?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-31
    • 2018-11-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-27
    相关资源
    最近更新 更多