2

J'ai un DataGridView avec deux DataGridViewComboBoxColumns. Je souhaite utiliser l'élément sélectionné dans la première colonne pour déclencher une nouvelle population des éléments de la deuxième colonne, par ligne.Erreur lors de la tentative de reconnexion de DataSource à DataGridViewComboBoxCell?

Voici le code que j'ai jusqu'à maintenant. "addlInfoParentCat" identifie la première colonne, et currentRow.Cells.Item (1) est le DataGridViewComboBoxCell que je veux re-remplir. ExtEventAdditionalInfoType est un type I défini qui contient les paires chaîne/valeur. Fondamentalement, ce que je vois, c'est que la liaison fonctionne très bien la première fois. Lorsque je sélectionne un élément dans la première colonne, il remplit correctement les éléments dans la seconde. Je peux ajouter des lignes à DataGridView et répéter le processus.

Le problème survient lorsque j'essaie de modifier l'élément de première colonne après que la deuxième colonne a déjà été liée. Je reçois une chaîne infinie de boîtes de dialogue avec les éléments suivants:

System.ArgumentException: la valeur DataGridViewComboBoxCell n'est pas valide.

Une idée pourquoi cela se passe-t-il? Merci d'avance!

MISE À JOUR La suggestion de CodeByMoonlight semble fonctionner.

j'effacer la valeur de DataGridViewComboBoxCell avant réappairant:

.... 

      subtypeCell.DataSource = Nothing 
      subtypeCell.Value = Nothing 'here's the change 
      subtypeCell.DataSource = theChildren 

.... 

Répondre

2

Eh bien, on dirait que dès que vous remodifier la valeur du premier combo, vous invalidant la liaison et source de données que vous avez utilisé pour alimenter la seconde combo, provoquant toutes les erreurs.

+0

Merci pour votre réponse CodeByMoonlight. J'ai peur de ne pas suivre. Chaque fois que je change la sélection dans la première colonne, j'obtiens une nouvelle liste des enfants, et je lie de nouveau le deuxième combo avec cette nouvelle liste. La liaison n'est pas valide, mais je la réinitialise, n'est-ce pas? Ou je ne fais pas la reliure correctement? – John

+0

Je pense que la clé est que la liaison est brièvement invalide, pas que vous le corrigez ensuite. Je pense que si vous effacez la valeur du second combo avant de charger la nouvelle source de données, ça devrait aller. Cependant, je poste à partir d'Opera Mini, donc je ne peux pas tester cela maintenant. – MartW

+0

Cela l'a corrigé. Je vous remercie! – John

Questions connexes