0
如何将数据库查询结果填充到列表视图。我遇到了“Form1.ListView1.Items(i).SubItems(1).Text = myRow.Item(0)”这一行的问题。VB.net将数据库查询结果填充到列表视图
Dim cn As New SqlConnection()
Dim WFTeam As New DataSet()
Dim da As SqlDataAdapter
Dim cmdBuilder As SqlCommandBuilder
Dim myRow As DataRow
Dim dt As New DataTable
Dim strSqlStm As String = ""
Dim strConnectionString As String = ""
strSqlStm = "SELECT [SRF#], [FirstName], [LastName] FROM [Agent] WHERE [TeamLeaderNo] = 103"
cn.ConnectionString = strDataSource & "Initial Catalog=EmployeeDatabase;" & strUID & strPassword
cn.Open()
da = New SqlDataAdapter(strSqlStm, cn)
cmdBuilder = New SqlCommandBuilder(da)
da.Fill(WFTeam, "Team")
WFTeam.Tables.Add(dt)
da.Fill(dt)
Form1.ListView1.Items.Clear()
Dim i As Integer = 1
For Each myRow In dt.Rows
If Not IsDBNull(myRow.Item(0)) Then
Form1.ListView1.Items(i).SubItems(1).Text = myRow.Item(0)
End If
If Not IsDBNull(myRow.Item(1)) Then
Form1.ListView1.Items(i).SubItems(2).Text = myRow.Item(1)
End If
If Not IsDBNull(myRow.Item(2)) Then
Form1.ListView1.Items(i).SubItems(3).Text = myRow.Item(2)
End If
i = i + 1
Next
cn.Close()
下面的代码工作,但我需要访问特定项目就像Excel中
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
马上我可以看到你正试图添加到一个不存在的项目。您清除了“ListView1.Items”,然后立即尝试设置“Items(1).SubItems(1)'的值。你首先需要做一个'ListView1.Items.Add()'。 “有问题”的 – helrich
不是很具描述性。我可以看到你清除项目;这意味着您需要使用LV的新数据创建新项目。清除后没有项目或子项目 – Plutonix
当第一个项目是DbNull时,新代码将不起作用 - 当没有项目时,不能添加子项目。当'myRow.Item(1)'为DbNull时,它还会将'myRow.Item(2)'放在第一列中。 – Plutonix