我很困惑,是一個相對較新的用戶vb.net。爲什麼我的列表視圖不會修改列表中的值?如果我可以的話,所以我有一個正確的方式來處理listview如何從數據庫中顯示數據。除了我的代碼問題之外,我還有一個常見問題。Listview幫助需要
我在我的listview(0-4)有五列。我是否正確地說,如果我的訪問數據庫包含10個字段,但我只需要顯示其中的5個,但其中一個是字段(9),那麼會像下面的代碼一樣編碼列表,這不會更改值,並且將只顯示列表,如果我刪除'else'語句。
什麼是錯誤?非常感謝
更新的代碼:
oledbCnn.ConnectionString = My.Settings.storageConnectionString
oledbCnn.Open()
'drcount = Convert.ToInt32(dr("RowCount"))
sql = "Select TOP 100 * from Requests ORDER BY [Date-time received] DESC"
Debug.Print(sql)
Dim oledbCmd As OleDbCommand = New OleDbCommand(sql, oledbCnn)
Using dr = oledbCmd.ExecuteReader()
'clear items in the list before populating with new values
'lvRequests.Items.Clear()
While dr.Read()
If dr.HasRows Then
Dim LVI As New ListViewItem
With LVI
.Text = dr(0).ToString()
.UseItemStyleForSubItems = False
.SubItems.Add(CDate(dr(5)).ToShortDateString())
.SubItems.Add(dr(1).ToString())
.SubItems.Add(dr(3).ToString())
If dr(3).ToString = "D" Then
.SubItems(3).Text = "Destroyed"
ElseIf dr(3).ToString = "O" Then
.SubItems(3).Text = "Out"
ElseIf dr(3).ToString = "I" Then
.SubItems(3).Text = "Intake"
End If
.SubItems.Add(dr(9).ToString())
If dr(9).ToString = "DEMO" Then
.SubItems(9).Text = "Done"
End If
End With
lvRequests.Items.Add(LVI)
lvcount += 1
End If
End While
End Using
重要的是SQL語句中有多少列以及數據如何進入LV。沒有SQL(因此有多少數據列需要處理'SELECT *'和'選擇A,B,C,D,J FROM')。但是,如果您只向LV發佈5位信息,那麼您可能應該引用'SubItems(5)'。也可以在LV中隱藏SubItems。如果添加9個子項目,但只定義了5個列,則只顯示前5個。很難從這個小片段中多說出來。但是,DataGridView通常是數據網格顯示的更好選擇。 – Plutonix
謝謝Plutonix。因此,從你所說的,作爲一個例子,在上面的mycode中,我想要的字段是從0開始的訪問字段9,所以在我的示例中,dr(9)和子項(9)是正確的? – user1532468