VB.net将数据库查询结果填充到listview
如何将数据库查询结果填充到listview。我对行“Form1.ListView1.Items(I).SubItems(1).Text=myRow.Item(0)”有问题 下面的代码可以工作,但我需要像Excel一样访问特定的项目VB.net将数据库查询结果填充到listview,vb.net,listview,Vb.net,Listview,如何将数据库查询结果填充到listview。我对行“Form1.ListView1.Items(I).SubItems(1).Text=myRow.Item(0)”有问题 下面的代码可以工作,但我需要像Excel一样访问特定的项目 For Each myRow In dt.Rows If Not IsDBNull(myRow.Item(0)) Then Form1.ListView1.Items.Add(myRow.Item(0)) 'Form1.L
For Each myRow In dt.Rows
If Not IsDBNull(myRow.Item(0)) Then
Form1.ListView1.Items.Add(myRow.Item(0))
'Form1.ListView1.Items(i).SubItems(1).Text = myRow.Item(0)
End If
If Not IsDBNull(myRow.Item(1)) Then
Form1.ListView1.Items(Form1.ListView1.Items.Count - 1).SubItems.Add(myRow.Item(1))
'Form1.ListView1.Items(i).SubItems(2).Text = myRow.Item(1)
End If
If Not IsDBNull(myRow.Item(2)) Then
Form1.ListView1.Items(Form1.ListView1.Items.Count - 1).SubItems.Add(myRow.Item(2))
'Form1.ListView1.Items(i).SubItems(3).Text = myRow.Item(2)
End If
i = i + 1
Next
您清除了LV,因此没有要填充的项或子项。您需要创建新的ListViewItems并用DB数据填充它们。但是,如果第一个字段是bnull,则编辑将跳过添加项,这意味着您无法为该记录添加任何内容。以下内容还将“锚定”数据,以便当任何子项数据为“满”时,下一个子项不会移动到一个子项上:
Form1.ListView1.Items.Clear()
Dim lvi As ListViewItem
For Each myRow In dt.Rows
' create NEW listview item for this row
lvi = New ListViewItem
If IsDBNull(myRow.Item(0)) Then
lvi.Text = " " ' blank Item
Else
lvi.Text = myRow.Item(0)
End If
' repeat for the sub items, adding blanks when DbNull
If IsDBNull(myRow.Item(1)) Then
lvi.SubItems.Add(" ")
Else
lvi.SubItems.Add(myRow.Item(1))
End If
' etc
Form1.ListView1.Items.Add(lvi)
Next
DataGridView
比ListView
更适合这种情况,尤其是在访问类似于Excel的项目时。我认为这意味着您希望myRow.Item(2)
始终是第二个子项。因此,上面的代码添加了空项或子项作为“占位符” 我马上就可以看到您试图添加到一个不存在的项目中。您已清除了ListView1.Items
,然后立即尝试设置项(1).子项(1)
的值。您需要先执行ListView1.Items.Add()
first.“having problem”不是很描述性的。我可以看到你清理物品;这意味着您需要使用LV的新数据创建新项。清除后没有项或子项当第一项为DbNull时,新代码将不起作用-当没有项时,无法添加子项。当myRow.Item(1)
为DbNull时,它还将myRow.Item(2)
放入第1列。
Form1.ListView1.Items.Clear()
Dim lvi As ListViewItem
For Each myRow In dt.Rows
' create NEW listview item for this row
lvi = New ListViewItem
If IsDBNull(myRow.Item(0)) Then
lvi.Text = " " ' blank Item
Else
lvi.Text = myRow.Item(0)
End If
' repeat for the sub items, adding blanks when DbNull
If IsDBNull(myRow.Item(1)) Then
lvi.SubItems.Add(" ")
Else
lvi.SubItems.Add(myRow.Item(1))
End If
' etc
Form1.ListView1.Items.Add(lvi)
Next