Datagridview validation checkboxcolumn
-
16-10-2019 - |
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?
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