首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在添加新数据后刷新datagridview

如何在添加新数据后刷新datagridview
EN

Stack Overflow用户
提问于 2013-08-13 00:06:15
回答 9查看 122.5K关注 0票数 4

我很难找到刷新我的datagridview的方法..我试过datagridview.refresh(),datagridview.Update()....but它不工作...

这是我的代码

代码语言:javascript
复制
Imports System.Data
Imports System.Data.OleDb
Imports System.Data.Odbc
Imports System.Data.DataTable
Public Class Form1

Dim provider As String
Dim dataFile As String
Dim connString As String
Dim addstring As String
Dim cnn As OleDbConnection = New OleDbConnection
Dim ds As DataSet = New DataSet
Dim da As OleDbDataAdapter
Dim tables As DataTableCollection = ds.Tables
Dim cmd As New OleDb.OleDbCommand
Dim dr As System.Data.OleDb.OleDbDataReader


Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load

    t_date.Text = Today
    provider = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source="
    dataFile = "C:\Users\hp-2\Documents\Visual Studio 2012\Projects\Delta\Delta.mdb"

    connString = provider & dataFile
    cnn.ConnectionString = connString
    da = New OleDbDataAdapter("Select Customer_Name, Job, Amount from [Transaction] where Trans_date = Date()", cnn)
    da.Fill(ds, "Transaction")

    Dim view1 As New DataView(tables(0))
    Dim source1 As New BindingSource()
    source1.DataSource = view1
    showdata.DataSource = view1
    showdata.Refresh()
    cnn.Close()
End Sub

我试过这个,但它也不起作用。

代码语言:javascript
复制
Private Sub showdat()
    If Not cnn.State = ConnectionState.Open Then
        cnn.Open()
    End If
    showdata.Refresh()
    cnn.Close()
End Sub

..。

代码语言:javascript
复制
Private Sub btmclose_Click(sender As Object, e As EventArgs) Handles btmclose.Click
    Me.Close()
End Sub

Private Sub C_job_SelectedIndexChanged(sender As Object, e As EventArgs) Handles C_job.SelectedIndexChanged
    Dim selected As String = C_job.SelectedItem.ToString()
    If selected = "Internet" Then
        t_amount.Text = "20"
        php.Visible = True
    ElseIf selected = "Games" Then
        t_amount.Text = "10"
        php.Visible = True
    ElseIf selected = "Print (short)" Then
        t_amount.Text = "1"
        php.Visible = True
    ElseIf selected = "Print (long)" Then
        t_amount.Text = "2"
        php.Visible = True
    ElseIf t_amount.Text = "" Then
        php.Visible = False
    End If
End Sub

这是我的添加按钮..。在我点击it...the之后,数据被成功添加,但是datagridview并没有刷新...

代码语言:javascript
复制
Private Sub btnadd_Click(sender As Object, e As EventArgs) Handles btnadd.Click

    provider = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="
    dataFile = "C:\Users\hp-2\Documents\Visual Studio 2012\Projects\Delta\Delta.mdb"

    connString = provider & dataFile
    cnn.ConnectionString = connString
    cnn.Open()

    cmd.Connection = cnn

    cmd.CommandText = "insert into [Transaction] (Customer_Name, Job, Trans_date, Amount ) " & _
        " values ('" & C_name.Text & "','" & C_job.Text & "','" & t_date.Text & "','" & t_amount.Text & "')"
    cmd.ExecuteNonQuery()

    showdat()

    cnn.Close()
End Sub

End Class
EN

回答 9

Stack Overflow用户

发布于 2017-03-28 17:02:23

希望这将有助于创建函数

代码语言:javascript
复制
        private sub loaddata()
        datagridview.Datasource=nothing
        datagridview.refresh
        dim str as string = "select * from database"
      using cmd As New OleDb.OleDbCommand(str,cnn)
        using da As new OleDbDataAdapter(cmd)
          using newtable as new datatable
            da.fill (newtable)
            datagridview.datasource=newtable
          end using
       end using
     end using
end sub
票数 4
EN

Stack Overflow用户

发布于 2013-08-13 00:19:22

我认为问题在于您向数据库中添加了一个新条目,而不是数据网格表示的数据结构。您只是在load事件中查询数据库中的数据,所以如果数据库在那之后发生了更改,您将不会知道它。

要解决此问题,您需要在每次插入后重新查询数据库,或者在每次插入后将该项添加到表(0)数据结构中。

票数 3
EN

Stack Overflow用户

发布于 2015-06-01 04:11:05

我发现,如果您尝试使用来自dataset的更新数据刷新绑定的datagridview,则此代码可以正常工作。显然,这是在我将更新发送到数据库之后。

代码语言:javascript
复制
'clear out the datasource for the Grid view
Me.DataGridView1.DataSource = Nothing
'refill the table adapter from the dataset table 
Me.viewABCTableAdapter.Fill(Me.yourDataSet.viewABC)
'reset the datasource from the binding source
Me.DataGridView1.DataSource = Me.viewABCBindingSource
'should redraw with the new data
Me.DataGridView1.Refresh()
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18191666

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档