VB.NET - 位置1没有行 - 数据表

时间:2016-10-14 21:19:08

标签: vb.net datatable

我试图让数据表的内容显示在列表框中。但是,我无法弄清楚我的代码有什么问题;我很确定我已经尝试过各种方式,但方法正确。我通过StackOverflow和互联网搜索一般的答案,但我找不到任何相关的信息。我一直得到的错误是:

未处理的类型' System.IndexOutOfRangeException'发生在System.Data.dll

附加信息:位置1没有行。

    If dt.Rows.Count > 0 Then
        For i As Integer = 0 To dt.Rows.Count()
            lstBoxSaved.Items.Add((dt.Rows(i).Item(0).ToString) & " " &
                       (dt.Rows(i).Item(1).ToString))
        Next i
    Else
        MessageBox.Show("Please clear table", "error: too many entries")
    End If

前段时间我能够为一个项目获得一些变体,但是我需要显示数据表中的所有项目。如果有一种更有效的方式来显示也可以工作的整行。

2 个答案:

答案 0 :(得分:2)

你的问题在于你的循环被写入的方式超过了最后一个元素,这是引发异常的地方。例如,如果表中有1行,则行集合中的该行的索引为0.第一次循环发生时,dt.Rows(i)将获取表中的第一行(索引0)。下次循环发生时,i将为1.因此当dt.Rows(i)再次发生时,它会尝试抓取表中的第二个行,这样做不存在。因此,因为行从0开始编制索引,所以要循环到行数减去1

For i As Integer = 0 To dt.Rows.Count()应为For i As Integer = 0 To dt.Rows.Count() - 1

答案 1 :(得分:0)

尝试    Dim I As Integer             对于I = 0 To DataG1.Rows.Count - 2                 Dim row As DataGridViewRow = DataG1.Rows(I)

            Dim Check As DataGridViewCheckBoxCell = row.Cells(0)

            Dim ID As DataGridViewTextBoxCell = row.Cells(1)
            Dim Name As DataGridViewTextBoxCell = row.Cells(2)
            If Check.Value = True Then
            lstBoxSaved.Items.Add(ID ,Name )
            End If
        Next
        Catch ex As Exception
        End Try

         if you notice i added checkbox to grid and check if the checkbox is checked and after that add select rows to list box .