4

我有一个带有 dataGridView 的 vb.net 表单

dataGridView 数据源是带有这条sql语句的dgvTableAdapter

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)

我像这样从成员表中删除成员

' 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

我知道删除语句有效,因为我看到了数据库中的更改。如果我关闭表单并重新打开它,则 dataGridView 是最新的。

成员表是一个访问表

我在视觉 2010 调试模式下运行该应用程序。

4

5 回答 5

3

这样做的通常方法是重置DataSource.DataGridView

试试这个代码(使用正确的代码从数据集中提供正确的表):

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

调用.Refresh()不起作用,因为它只强制重新绘制,但绘制网格的代码不知道更改。

于 2012-04-13T01:17:12.693 回答
3

我在寻找完全相同的问题时偶然发现了这一点。不过网上没找到。这对我有用:

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

首先清除数据表中的所有数据,然后用数据适配器中的数据重新填充它,因为您说数据库已使用您的代码进行了更新,只是它没有刷新。

于 2013-02-22T17:29:24.873 回答
1

你也可以使用这个:

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

只需更换dataGridView1. 第二个参数是DataTable类。

于 2013-01-16T16:46:41.530 回答
0

...以及对我有用的替代方法:

'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
于 2014-02-14T09:49:59.943 回答
0

我刚刚添加了这一行:

    Me.EmpTableAdapter.Fill(Me.MyDbDataSet1.Emp)
于 2021-03-02T07:26:13.860 回答