簡體   English   中英

為什么每次訪問Access數據庫時VB.Net中的DataGridView大小都會增加一倍?

[英]Why is my DataGridView in VB.Net doubling in size every time I access the Access Database?

我這里有一些基本代碼,它們可以調用Access數據庫(“房屋”),僅此而已。 但是,每次單擊按鈕時,DataGridView的大小都會加倍。 我的意思是,如果實際的Access數據庫有5行,DataGridView最初會顯示正確的數據庫,但是每次單擊按鈕后,它最多上升10行(它們重復),然后是15行,然后是20行,等等。不幸的是,我可以請勿將其放置在Form_Load區域中。

我嘗試將“ dt.rows.clear()”放在“ dgv.DataSource = dt”之前,但它會擦除所有內容。 還嘗試了“ DirectCast(Dgv.DataSource,DataTable).Rows.Clear()”和“ Dgv.Datasource = Nothing”

Public Class frmHouses
Dim dt As DataTable = New DataTable()
Dim connStr As String = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=Houses.accdb"
Dim sqlStr As String = "SELECT * FROM Property"

Private Sub btnRecord_Click(sender As Object, e As EventArgs) Handles btnRecord.Click

    Dim dataAdapter As OleDb.OleDbDataAdapter = New OleDb.OleDbDataAdapter(sqlStr, connStr)

    dataAdapter.Fill(dt)
    dataAdapter.Dispose()

    dgv.DataSource = dt

End Sub

謝謝!

Public Class frmHouses

Dim connStr As String = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=Houses.accdb"
Dim sqlStr As String = "SELECT * FROM Property"

Private Sub btnRecord_Click(sender As Object, e As EventArgs) Handles btnRecord.Click
    Dim dt As DataTable = New DataTable()
    Dim dataAdapter As OleDb.OleDbDataAdapter = New OleDb.OleDbDataAdapter(sqlStr, connStr)

    dataAdapter.Fill(dt)
    dataAdapter.Dispose()

    dgv.DataSource = dt

End Sub

或者你可以

Public Class frmHouses
Dim dt As DataTable = New DataTable()
Dim connStr As String = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=Houses.accdb"
Dim sqlStr As String = "SELECT * FROM Property"

Private Sub btnRecord_Click(sender As Object, e As EventArgs) Handles btnRecord.Click
    dt.clear()
    Dim dataAdapter As OleDb.OleDbDataAdapter = New OleDb.OleDbDataAdapter(sqlStr, connStr)

    dataAdapter.Fill(dt)
    dataAdapter.Dispose()

    dgv.DataSource = dt

End Sub
Public Class frmHouses
Dim dt As DataTable = New DataTable()
Dim connStr As String = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=Houses.accdb"
Dim sqlStr As String = "SELECT * FROM Property"

Private Sub btnRecord_Click(sender As Object, e As EventArgs) Handles btnRecord.Click
    Dim dataAdapter As OleDb.OleDbDataAdapter = New OleDb.OleDbDataAdapter(sqlStr, connStr)
    dataAdapter.Fill(dt)
    dataAdapter.Dispose()
    IF dgv.Rows.Count > 0 Then
    dgv.Rows.Clear()
    End IF
    dgv.DataSource = dt
End Sub

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM