DataGridView does not refresh after dataset update vb.net

做~自己de王妃 提交于 2019-12-10 16:45:22

问题


I have a vb.net form with a dataGridView

The dataGridView data source is the dgvTableAdapter with this sql statement

SELECT membres.ID, membres.refere_par, bands.titre, 
       membres_1.prenom & ' ' & membres_1.nom  AS reference_nom
FROM ((bands INNER JOIN membres ON bands.ID = membres.[band]) 
      INNER JOIN membres membres_1 ON membres.refere_par = membres_1.ID)

I delete membres from the membres Table like this

' Get member id 
Dim userId As Integer 
userId = DataGridView1.Item( 0,0).Value

' Delete the member
Me.MeoshowDataSet2.membres.FindByID(userId).Delete()
Me.MembresTableAdapter.Update(Me.MeoshowDataSet2)

' Refresh datagrid
dataGridView1.Refresh() ' does nothing

I know the delete statement works because I saw the changes in the database. If I close the form and reopen it, the dataGridView is up to date.

The membres table is an access table

I'm running the app in visual 2010 debug mode.


回答1:


The usual way of doing this is to reset the DataSource of the DataGridView.

Try like this code (with correct code to provide the right table from the dataset):

dataGridView1.DataSource = typeof(List); 
dataGridView1.DataSource = dataset.Tables["your table"];

Calling .Refresh() doesn't work since it only forces a repaint, but the code that paints the grid doesn't know of the changes.




回答2:


I stumbled upon this while searching for exact same problem. Didn't find it online though. Here's what worked for me:

Public Sub RefreshData()
    dTable.Clear()
    dAdapter.Fill(dTable)
    dtaDataGrid.DataSource = dTable
End Sub

Private Sub btnRefresh_Click(sender As System.Object, e As System.EventArgs) Handles btnRefresh.Click
    RefreshData()

    ClearAllTextBox(Me)
End Sub

Cleared all the data in the data table first then refilled it with the data from the data adapter since you said that the database was updated with your code, only that it didn't refresh.




回答3:


You can also use this:

DirectCast(dataGridView1.DataSource, DataTable).AcceptChanges()

Just replace dataGridView1. The 2nd parameter is the DataTable class.




回答4:


...and an alternative that worked for me:

'reset datasource

dgvBHL.DataSource = nothing

' Assign datatable to dgv this always works 1st time it is called

dgvBHL.DataSource = dtData 

'To fix the DGV not refreshing properly after the 1st time, switch the sort order

dgvBHL.Sort(dgvBHL.Columns(0), System.ComponentModel.ListSortDirection.Descending)

dgvBHL.Sort(dgvBHL.Columns(0), System.ComponentModel.ListSortDirection.Ascending)

'No need to do a refresh or anything else


来源:https://stackoverflow.com/questions/10133946/datagridview-does-not-refresh-after-dataset-update-vb-net

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!