我正在尝试用我的访问数据库中的项目填充VB.net中的Listview。
到目前为止,我已经设法用我想要的所有项目填充它,但我需要在右栏下面的项目。 (用户和评论)
以下是所有相关代码:
Dim count As Integer
Dim comments As New DataSet
comments = GetComments(classid)
With CommentsView
.View = View.Details
.Columns.Add("User")
.Columns.Add("Comment")
End With
count = CountRecords() - 1
For i As Integer = 0 To count
CommentsView.Items.Add(comments.Tables(0).Rows(i).Item(2))
CommentsView.Items.Add(comments.Tables(0).Rows(i).Item(3))
Next
所以基本上我想在评论下的用户和项目(3)下面的项目(2)。有什么想法吗?
感谢。
答案 0 :(得分:4)
您正在添加等同于LV中的行的项目,您需要将User和Comment添加为SubItems(在视觉上等同于列)。
Dim LVI as ListViewItem
' no need for a count temp var
For i As Integer = 0 To CountRecords() - 1
LVI = New ListViewItem
' whatever you want to show in columns 0
LVI.Text = (What_Ever_Text_For_Col_0)
' add subitem text
' this is adding strings from a dataset, but could be any string
LVI.SubItems.Add(comments.Tables(0).Rows(i).Item(2)) ' maybe .ToString?
LVI.SubItems.Add(comments.Tables(0).Rows(i).Item(3))
' add completed LVI to the LV
CommentsView.Items.Add(LVI)
Next
答案 1 :(得分:0)
我花了一段时间才弄清楚这个逻辑。我将在此再次作为进一步的示例进行重述。
Dim count As Integer
Dim comments As New DataSet
comments = GetComments(classic)
到目前为止一切顺利。
With ListView1
.View = View.Details
.HeaderStyle = ColumnHeaderStyle.Nonclickable ' set to whatever you need
.Columns.Clear() ' make sure columnscollection is empty
' Add 2 columns
.Columns.Add("User")
.Columns.Add("Comment)
End With
也不错。一些小的补充。
For i As Integer = 0 To CountRecords() - 1
CommentsView.Items.Add(New ListViewItem({comments.Tables(0).Rows(i).Item(2), comments.Tables(0).Rows(i).Item(3)}))
Next
带有字段数组的这一行 CommentsView.Items.Add
是我认为您正在寻找的技巧。
我对此的方法略有不同。下面是一个例子:
Dim conn As New SQLiteConnection("Data Source=myDatabase.sql3;Version=3;")
conn.Open()
' I 'm using a table in my database called "lang", a list of languages and language codes.
Dim SQL as string = "Select * from lang;"
Dim da As New SQLiteDataAdapter(SQL, conn)
Dim ds As New DataSet
da.Fill(ds, "lang")
conn.Close()
'ListView1
With ListView1
.View = View.Details
.HeaderStyle = ColumnHeaderStyle.Nonclickable ' set to whatever you need
.Columns.Clear() ' make sure columns collection is empty
' Add 3 columns
.Columns.Add(ds.Tables(0).Columns(0).ColumnName)
.Columns.Add(ds.Tables(0).Columns(1).ColumnName)
.Columns.Add(ds.Tables(0).Columns(2).ColumnName)
End With
For i As Integer = 0 To ds.Tables(0).Rows.Count - 1
ListView1.Items.Add(New ListViewItem({ds.Tables(0).Rows(i).Item(0).ToString(), _
ds.Tables(0).Rows(i).Item(1).ToString(), _
ds.Tables(0).Rows(i).Item(2).ToString()}))
Next
Rows.Count
来确定行数