La suppression de la ligne de datatable en C#
Je vais avoir un problème de suppression de lignes dans une datatable. Dans mon programme, je suis de lecture des informations d'une base de données dans une table de données à l'aide d'une requête sql. J'utilise une connexion oledb et le code dt.Load(command.ExecuteReader());
pour ce faire. Plus tard, je veux supprimer les lignes qui correspondent à un id de chaîne. J'ai essayé le code suivant acheter impossible de le faire fonctionner:
DataRow[] drr = dt.Select("Student=' " + id + " ' ");
for (int i = 0; i < drr.Length; i++)
dt.Rows.Remove(drr[i]);
dt.AcceptChanges();
Quelqu'un peut s'il vous plaît suggérer une autre façon avec un exemple?
les messages d'erreur?
nan pas d'erreurs. j'ai essayé de faire imprimer le nombre de lignes dans la table. c'est la même avant et après la suppression de la méthode ci-dessus
nan pas d'erreurs. j'ai essayé de faire imprimer le nombre de lignes dans la table. c'est la même avant et après la suppression de la méthode ci-dessus
OriginalL'auteur Norman | 2011-06-17
Vous devez vous connecter pour publier un commentaire.
Essayez d'utiliser Supprimer méthode:
ne fonctionne pas. le nombre de lignes est de nouveau le même avant et après. J'ai un datagrid afficher affichage de la table. il reste inchangée
Est votre
dt.Select("Student...
retour des résultats (non vide)?hmm... il est. Je ne sais pas pourquoi. le nom de la colonne est clairement ce que l'étudiant comme on le voit dans la dgv
wow je l'ai eu! apparemment, l'expression "Étudiant=' "+ id + "'" a deux espaces avant et après le guillemet simple!
OriginalL'auteur manji
Il existe plusieurs façons de le faire. Mais Vous pouvez utiliser l'approche suivante:
OriginalL'auteur Wicked Coder
À cette question vous donnera de bonnes idées sur la façon de supprimer un enregistrement d'une Table de données:
DataTable, Comment conditionnellement supprimer des lignes
Il devrait ressembler à ceci:
N'oubliez pas que si vous voulez mettre à jour votre base de données, vous allez avoir besoin d'appeler la commande de mise à Jour. Pour plus d'informations sur ce sujet, consultez ce lien:
http://www.codeguru.com/forum/showthread.php?t=471027
OriginalL'auteur IAmTimCorey
Je pense que la raison de la Fpo code ne fonctionne pas car une fois que vous Retirez vous êtes à la modification de la Longueur de la rrc. Lorsque vous appelez Supprimer vous n'êtes pas en fait de la suppression de la ligne jusqu'à ce que AcceptChanges est appelé. C'est pourquoi, si vous voulez utiliser l'option Supprimer vous avez besoin d'une boucle séparée.
En fonction de la situation ou de préférence...
Ci-dessus utilisé pour les deux prochains exemples
OU
OU
Notez que si vous appelez Delete (), alors vous devriez appeler AcceptChanges (), mais si vous appelez Remove() puis AcceptChanges() n'est pas nécessaire.
Aussi, voici un bon lien sur la ligne du filtre à la syntaxe.
OriginalL'auteur Soenhay
Je vois un certain nombre de réponses à l'aide de la méthode d'enlèvement et d'autres à l'aide de la méthode Delete.
Supprimer (selon les docs) sera immédiatement supprimer l'enregistrement de la table), et sur la mise à Jour, ne sera pas supprimer un manque d'enregistrement.
De supprimer, en comparaison des changements de la RowState à Supprimé, et mettre à jour le serveur tableau de mise à Jour. De même, l'appel de la méthode AcceptChanges avant la mise à Jour de la table de serveur va réinitialiser tous vos RowState(s) n'ont pas changé et rien ne sera flux vers le serveur. (Toujours en soins infirmiers mon pouce, après avoir atteint cette un certain nombre de fois).
OriginalL'auteur user3158591
Si vous souhaitez supprimer le toute la ligne de DataTable ,
essayer cette
OriginalL'auteur Karthikeyan P
Avance
for loop
fonctionne le mieux pour ce casOriginalL'auteur Parag555
un exemple simple : http://www.dotnetspark.com/tutorial/13-42-delete-row-from-datatable.aspx
Fait ce travail pour vous?
vous pouvez rechercher datatable , msdn.microsoft.com/en-us/library/b5c0xc84(SV.80).aspx et supprimer la ligne dont vous avez besoin après que.
OriginalL'auteur adt