我有一个名为lvSearchResults的ListView控件,我想从我的数据集中填充。数据集是从SQL查询填充的,由于某种原因,它只显示3列中的2列,并将它们移到右侧。
它将PID编号放在姓氏列中,将最后一个名称放在第一个名称列中。它根本不显示名字。由于隐私原因,红色栏是我审查数字的地方,但它显示的是那里的PID号。
这是我的代码
Try
mySelectAdapter.SelectCommand = New iDB2Command("SELECT EESSN,EENAML,EENAMF FROM CARSPROD.EMPMSTR WHERE EENAML LIKE '" + txtLName.Text.ToUpper.Trim + "%' ORDER BY EENAML ASC", myConnection)
mySelectAdapter.Fill(dsSearchResults)
mySelectAdapter.SelectCommand.Dispose()
Catch ex As Exception
MsgBox(ex.Message, MsgBoxStyle.Critical)
End Try
lvSearchResults.Clear()
lvSearchResults.Cursor = Cursors.WaitCursor
lvSearchResults.View = View.Details
lvSearchResults.GridLines = True
lvSearchResults.FullRowSelect = True
lvSearchResults.HideSelection = False
lvSearchResults.MultiSelect = False
lvSearchResults.Columns.Add("PID", 55, HorizontalAlignment.Right)
lvSearchResults.Columns.Add("Last Name", 55, HorizontalAlignment.Left)
lvSearchResults.Columns.Add("First Name", 55, HorizontalAlignment.Left)
MsgBox(lvSearchResults.Columns.Count.ToString)
If dsSearchResults.Tables(0).Rows.Count > 0 Then
Dim lv As ListViewItem
For i = 0 To dsSearchResults.Tables(0).Rows.Count - 1
lv = New ListViewItem
lv.SubItems.Add(dsSearchResults.Tables(0).Rows(i)(0))
lv.SubItems.Add(dsSearchResults.Tables(0).Rows(i)(1))
lv.SubItems.Add(dsSearchResults.Tables(0).Rows(i)(2))
lvSearchResults.Items.Add(lv)
Next
我对这一点感到非常难过。如果有人有任何想法我会非常感激。
答案 0 :(得分:1)
请记住,ListViewItem.Text将显示在Col(0)中,因此当您添加3个子项时,最终会添加一个以上的子项,并且不会为第一列提供任何文本(LVI" label& #34;本身)。这应该有效:
For i = 0 To dsSearchResults.Tables(0).Rows.Count - 1
lv = New ListViewItem
lv.Text = dsSearchResults.Tables(0).Rows(i)(0)
lv.SubItems.Add(dsSearchResults.Tables(0).Rows(i)(1))
lv.SubItems.Add(dsSearchResults.Tables(0).Rows(i)(2))
lvSearchResults.Items.Add(lv)
Next
您只需要添加2个子项,因为LVI本身的.Text
显示在第一列中。 DataGridView会更容易 - 只需设置DataSource。