Просмотр содержимого таблицы базы данных Access 2007 с помощью VB.net - PullRequest
0 голосов
/ 15 февраля 2010

Я пытаюсь отобразить содержимое таблицы из базы данных Access 2007 в окне списка.

Я использую поле со списком, чтобы выбрать пользователя, о котором я хочу узнать подробности:

    Private Sub Admin_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    ReadUsers()

    con.ConnectionString = ("Provider=Microsoft.ACE.OLEDB.12.0;" & "Data Source=E:\Computing\Projects\Login\Login\bds.accdb;")

    con.Open()

    Sql = "Select * From Clients"
    da = New OleDb.OleDbDataAdapter(Sql, con)

    da.Fill(ds, "Clients")
    MaxRows = ds.Tables("Clients").Rows.Count
    intCounter = -1

    ComboBoxClients.DisplayMember = "ClientName"
    ComboBoxClients.ValueMember = "ID"
    ComboBoxClients.DataSource = ds.Tables("Clients")

Тогда внутри списка:

Private Sub ListView1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ListView1.SelectedIndexChanged
    Dim Test As Integer

    ListView1.Clear()

    For i = 0 To MaxRows - 1
        Test = ds.Tables("Clients").Rows(i).Item("ClientName")

        If Test = ComboBoxClients.SelectedValue Then
            For intCounter As Integer = 0 To ds.Tables("Clients").Columns.Count - 1
                ListView1.Columns.Add(ds.Tables("Clients").Columns(intCounter).ColumnName, 80, HorizontalAlignment.Center)
            Next

            Dim ListItem = New ListViewItem

            ListItem = ListView1.Items.Add(ds.Tables("Clients").Rows(i).Item(0))
            ListItem.SubItems.Add(ds.Tables("Clients").Rows(i).Item(1))
            ListItem.SubItems.Add(ds.Tables("Clients").Rows(i).Item(2))
            ListItem.SubItems.Add(ds.Tables("Clients").Rows(i).Item(3))
            ListItem.SubItems.Add(ds.Tables("Clients").Rows(i).Item(4))

        End If
    Next
End Sub

В окне списка пока ничего не отображается: The listview box currently doesn't display anything

Любая помощь будет великолепна, спасибо.

ListView1 Редакция:

    Private Sub ListView1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ListView1.SelectedIndexChanged
    Dim Test As Integer
    Dim ListItem = New ListViewItem
    ListView1.Clear()

    For i = 0 To MaxRows - 1
        Test = ds.Tables("Clients").Rows(i).Item("ClientName")

        If Test = ComboBoxClients.SelectedValue Then
            For intCounter As Integer = 0 To ds.Tables("Clients").Columns.Count - 1
                ListView1.Columns.Add(ds.Tables("Clients").Columns(intCounter).ColumnName, 80, HorizontalAlignment.Center)
            Next

            ListItem.SubItems.Add(ds.Tables("Clients").Rows(i).Item(0))

            ListItem.SubItems.Add(ds.Tables("Clients").Rows(i).Item(1))
            ListItem.SubItems.Add(ds.Tables("Clients").Rows(i).Item(2))
            ListItem.SubItems.Add(ds.Tables("Clients").Rows(i).Item(3))
            ListItem.SubItems.Add(ds.Tables("Clients").Rows(i).Item(4))

            ListView1.Items.Add(ListItem)
        End If
    Next
End Sub

1 Ответ

0 голосов
/ 15 февраля 2010

Эта строка ...

ListItem = ListView1.Items.Add(ds.Tables("Clients").Rows(i).Item(0))

... фактически не добавляет ListItem к ListView1. После объявления и настройки ListItem, , затем добавьте его в элемент управления ListView:

' ...
ListItem.SubItems.Add(ds.Tables("Clients").Rows(i).Item(3))
ListItem.SubItems.Add(ds.Tables("Clients").Rows(i).Item(4))

ListView1.Items.Add(ListItem)

Кроме того, я обнаружил, что проще заполнить элемент управления ListView следующим образом:

Dim items() As String = {dr("customer_id").ToString, _
                         dr("id").ToString, _
                         dr("name").ToString, _
                         dr("address1").ToString, _
                         dr("city").ToString, _
                         dr("state").ToString, _
                         dr("zip_code").ToString}

Dim lvi As New ListViewItem(items)

ListView1.Items.Add(lvi)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...