VB.NET ListView显示了我的数据集中除了一列以外的所有列

时间:2014-06-20 20:30:01

标签: sql database vb.net listview dataset

我有一个名为lvSearchResults的ListView控件,我想从我的数据集中填充。数据集是从SQL查询填充的,由于某种原因,它只显示3列中的2列,并将它们移到右侧。

enter image description here

它将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

我对这一点感到非常难过。如果有人有任何想法我会非常感激。

1 个答案:

答案 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。