2010-01-12 7 views
2

Je DataGridView lié à un BindingSource avec source de données comme une liste de modèles de disques actifs:Bound source de liaison DataGridViewCheckBoxColumn pas la mise à jour

BindingSource bs = new BindingSource(); 
    bs.DataSource = _user.Addresses; 

Adresse a la propriété bool nommée Actual, et mon DataGridView a CheckBoxColumn:

DataGridViewCheckBoxColumn c = new DataGridViewCheckBoxColumn(false); 
    c.Name = "actualColumn"; 
    c.HeaderText = "Aktualny"; 
    c.DataPropertyName = "Actual"; 
    c.AutoSizeMode = DataGridViewAutoSizeColumnMode.ColumnHeader; 
    addressesDataGridView.Columns.Add(c); 

Les données de la base de données s'affichent correctement.

Lorsque je clique sur la case à cocher case à cocher et décochez-la, puis aller au bouton Enregistrer, la propriété Actual dans ma source bindings n'est pas décochée.

Lorsque je clique sur la case cochée case et décochez-la et modifier la sélection de ligne, puis cliquez sur Enregistrer, les changements de bouton sont visibles dans bindingsource.

Une solution de contournement existe-t-elle pour ce problème?

Répondre

2

Le problème est que la grille de données ne met pas à jour la source de données sous-jacente.

Vous pouvez essayer d'appeler BindingSource.EndEdit comme première chose dans la fonctionnalité Enregistrer.

Vous pouvez également essayer d'appeler EndCurrentEdit sur le CurrencyManager lié au contrôle. Pour y accéder vous:

myCurrencyManager = (CurrencyManager)this.BindingContext[myTable];

+1

Aucune de votre suggestion a travaillé, mais vous me avez inspiré (pour ce +1 :), merci) et après place sur le dessus de sauver la fonctionnalité fonctionne: adressesDataGridView.EndEdit() –

Questions connexes