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

データベースの変更を確認したので、delete ステートメントが機能することはわかっています。フォームを閉じて再度開くと、dataGridView は最新です。

members テーブルはアクセス テーブルです。

アプリをビジュアル 2010 デバッグ モードで実行しています。

4

5 に答える 5

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 に答える
3

これを行う通常の方法は、 の をリセットするDataSourceことですDataGridView

次のコードのように試してください (データセットから適切なテーブルを提供するための正しいコードを使用):

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

再描画を強制するだけなので呼び出し.Refresh()は機能しませんが、グリッドを描画するコードは変更を認識しません。

于 2012-04-13T01:17:12.693 に答える
1

これを使用することもできます:

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

交換するだけdataGridView1です。2 番目のパラメーターは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 に答える