J'ai un datagridview avec un dataTable comme source de données. L'utilisateur peut ajouter de nouvelles lignes à la grille de données, mais je n'affiche pas la colonne de la clé primaire (pour des raisons évidentes) et la règle sur .visible = false
. Lorsque j'ai besoin de mettre à jour les informations de la base de données, j'utilise le sqlClient.SqlCommandBuilder
pour mettre à jour la source de données sous-jacente (le dataTable mentionné ci-dessus). Maintenant, parce que la colonne cachée est la clé primaire, je parcourt le datagridview et ajoute par programme le champ de clé primaire requis à chaque nouvelle ligne qui ne contient pas déjà une clé primaire (lignes ajoutées par l'utilisateur). Cela fonctionne très bien 95% du temps ...DataGridView dans VB.net ne me permettra pas de mettre à jour
Le problème est lorsque l'utilisateur donne d'une manière ou d'une autre un certain point (n'importe quel point) à cette rangée du bas sur le datagridview, en dessous de leurs lignes ajoutées, qui est utilisé pour ajouter de nouvelles lignes La commande de mise à jour me donne une erreur indiquant qu'elle ne peut pas insérer null dans le champ de clé primaire, même si lors de la vérification de toutes les valeurs de chaque ligne, elle n'est certainement null pour aucun d'entre eux.
J'ai essayé d'intercepter row.isNewRow
(car le champ ne montre jamais null) et de supprimer cette ligne, mais j'obtiens une erreur indiquant que je ne peux pas supprimer une ligne non validée. Si le focus n'est jamais donné à cette ligne vide sous les lignes existantes et les lignes ajoutées par l'utilisateur, la mise à jour fonctionne correctement.
Que se passe-t-il ?!
Il serait utile de décrire la façon dont ce code répond à la question. – Jason