0

DatagridViewには、データバインドされたチェックボックス列があります。しかし、複数のチェックボックスをオンまたはオフにすると、すべての変更が保存されるわけではありません。(すべてのプロパティ Set メソッドをトリガーするわけではありません。おそらく 2 番目ごとにトリガーされます)。ただし、チェックボックスをクリックするたびに、次のチェックボックスの前に別のセル (列) をクリックすると、すべてのアクションが Set メソッドをトリガーします。したがって、セルの検証はセルごとではなく、列ごとに機能するようです(チェックボックス列の場合)。では、これをどのように解決しますか?

4

2 に答える 2

3

答えが見つかりました: DataGridView with CheckBox セルの問題

しかし、おそらくより簡単な方法は、保存ボタン メソッドを挿入することです。

DataGridView.EndEdit();
于 2011-01-21T22:58:16.103 に答える
0

あなたが何を試し、何がうまくいかないのかははっきりしていません。Winform アプリケーションがあり、SqlDataSource を使用して SQL Server テーブルをグリッドにバインドしているとします。データベースには boolean(bit) フィールドがあるため、グリッドは自動的に DataGridViewCheckBoxColumn を生成します。ユーザーが保存ボタンをクリックしたときに行ったすべての変更を保存しようとしています。

これらの推測はすべて正しいですか?

データセット/データテーブルを dataadapter で更新するだけです。

Private Sub BtnSaveChanges_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnSaveChanges.Click
    Me.FooTableAdapter.Update(DataSet1.Foo)
End Sub

MSD の例: http://msdn.microsoft.com/en-use/library/fbk67b6z.aspx

変更をデータベースに直接保存する必要がある場合は、BindingSourceのCurrentItemChanged イベントを処理できます。

Private Sub FooBindingSource_CurrentItemChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles FooBindingSource.CurrentItemChanged
     Dim thisDataRow As DataRow = DirectCast(DirectCast(sender, BindingSource).Current, DataRowView).Row
     If thisDataRow.RowState = DataRowState.Modified Then
         Me.FooTableAdapter.Update(thisDataRow)
     End If
End Sub
于 2011-01-21T21:36:13.057 に答える