【问题标题】:View Access 2007 Database Table Contents using VB.net使用 VB.net 查看 Access 2007 数据库表内容
【发布时间】:2011-03-12 22:38:16
【问题描述】:

我正在尝试在列表视图框中显示 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

列表视图框目前不显示任何内容:

任何帮助都会很棒,谢谢。

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

【问题讨论】:

    标签: database vb.net


    【解决方案1】:

    这一行……​​

    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)
    

    【讨论】:

    • 我没有完全理解你。如果线路不起作用,我应该用什么替换它?我也尝试过该代码并且不起作用。谢谢
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-06
    • 2011-07-15
    • 1970-01-01
    • 2011-03-28
    • 1970-01-01
    相关资源
    最近更新 更多