Question

Dans un datagridview Je databound checkboxcolumns . Mais si je cocher ou décocher plusieurs cases à cocher, toutes les modifications sont enregistrées. (Il ne déclenche pas la méthode Ensemble de propriété sur tout, peut-être tous les 2). Toutefois, si je après chaque case-clic, cliquez sur une autre cellule (colonne) avant la prochaine case à cocher, toutes les actions déclenchent les méthodes Set. Il semble donc la validation cellulaire ne fonctionne pas sur une base par cellule, mais sur une base par colonne (Pour le checkboxcolumn). Alors, comment résolvez-vous?

Était-ce utile?

La solution

trouvé la réponse: DataGridView avec le problème des cellules CheckBox

Mais sans doute plus facile alternative est de mettre dans la méthode bouton Enregistrer:

DataGridView.EndEdit();

Autres conseils

Il est pas vraiment clair ce que vous avez essayé et ce qui ne fonctionne pas. Je suppose que vous avez une application Winform et utilisez un SqlDataSource pour lier une table SQL Server pour votre réseau. Il y a un champ booléen (bits) dans votre base de données, d'où la grille génère automatiquement un DataGridViewCheckBoxColumn. Vous essayez d'enregistrer toutes les modifications que l'utilisateur a fait quand il clique sur un bouton de sauvegarde.

sont corrects toutes ces suppositions?

Tout ce que vous avez à faire est de mettre à jour votre ensemble de données / datatable avec le 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-Exemple: http://msdn.microsoft.com/en- utilisation / bibliothèque / fbk67b6z.aspx

Si des modifications doivent être enregistrées directement à la base de données, vous pouvez gérer la CurrentItemChanged événement du BindingSource.

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
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top