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