从ListView控件中检索数据

时间:2010-04-15 12:14:35

标签: database vb.net listview selectedindex

我在详细模式下设置了一个包含5列的ListView控件。它由代码填充,使用以下子例程:

            For j = 0 To 14
                cmd = New OleDbCommand("SELECT TeacherName, ClassSubject, BookingDate, BookingPeriod FROM " & SchemaTable.Rows(i)!TABLE_NAME.ToString() & " WHERE (((BookingDate)=" & Chr(34) & Date.Today.AddDays(j) & Chr(34) & ") AND ((UserName)=" & Chr(34) & user & Chr(34) & "));", cn)
                dr = cmd.ExecuteReader
                Dim itm As ListViewItem
                Dim itms(4) As String
                While dr.Read()
                    itms(0) = dr(0)
                    itms(1) = SchemaTable.Rows(i)!TABLE_NAME.ToString()
                    itms(2) = dr(1)
                    itms(3) = dr(2)
                    itms(4) = dr(3)
                    itm = New ListViewItem(itms)
                    Manage.ManageList.Items.Add(itm)
                End While
            Next

请注意,这不是完整例程,只是填充网格的位。

现在我需要从ListView控件中检索数据,以便删除数据库中的预订。我使用以下代码检索每列的内容:

ManageList.SelectedItems(0).Text

但它似乎只适用于索引0.如果我这样做:

ManageList.SelectedItems(3).Text

我收到此错误:

  

InvalidArgument =值'3'不是   对'index'有效。参数名称:   索引

我非常难过,对我来说,索引1将指向第二列,索引2指向第三列等,因为它基于0,这似乎是合乎逻辑的?

任何帮助都将不胜感激,谢谢。

2 个答案:

答案 0 :(得分:1)

当您说ManageList.SelectedItems(3).Text时,您会询问列表中所选的第四项,而不是所选项目的第四列。

请参阅MSDN

编辑:以这种方式思考:ManageList.SelectedItems(0)=itms,这是一个字符串数组。以下示例显示如何访问列表中所选数组的第四个数组值:

Dim itms() As String = ManageList.SelectedItems(0)
If itms.Length>3 Then
    itms(3).DoWhatever
End If

答案 1 :(得分:0)

SelectedItems方法返回选定的ListViewItem。要访问其中的各个列,请使用SubItems属性。

请注意文档:

  

第一个子项目   ListViewItem.ListViewSubItemCollection   永远是拥有的项目   子项目。执行操作时   在集合中的子项目,请确保   改为引用索引位置1   0表示更改第一个   子项。