Supprimer des lignes d'un datatable [Résolu]

Souliabdo 186 Messages postés mercredi 14 mars 2007Date d'inscription 11 avril 2011 Dernière intervention - 17 juin 2009 à 13:48 - Dernière réponse : Souliabdo 186 Messages postés mercredi 14 mars 2007Date d'inscription 11 avril 2011 Dernière intervention
- 17 juin 2009 à 17:30
Bonjour,



<?xml:namespace prefix o ns "urn:schemas-microsoft-com:office:office" /??>
 




Je voulais supprimer des lignes sélectionné dans ma data table


J’ai essayé avec toutes les boucles, il ne me supprime jamais toutes les lignes sélectionnées


Je pense il ré index les ligne à chaque fois ?



 




Une idée  s’il vous plaît….
Afficher la suite 

9 réponses

Répondre au sujet
krimog 1863 Messages postés lundi 28 novembre 2005Date d'inscription 14 février 2015 Dernière intervention - 17 juin 2009 à 15:57
+3
Utile
Ah, oui, pardon, j'ai rien dit, j'avais cru que tu faisais le j-- dans un if, au temps pour moi.

Et ce que je proposais avec le i--, c'était ça :

             for (int i = 0; i < Mygrid.Rows.Count; i++)

            {

                 if (Mygrid.Rows[i].Cells[2].Value.ToString() == "True")

                {

                    for (int j = 0; j < MydataTable.Rows.Count; j++)

                    {

                        if (MyGrid.Rows[i].Cells[0].Value.ToString().CompareTo(MydataTable.Rows[j][0]) == 0)

                        {

                            MydataTable.Rows.RemoveAt(j);

                            i--;

                            break;

                        }

                    }

                }

            }

Krimog : while (!(succeed = try())) ;
- NON, "LE BAR" n'est PAS un langage de programmation ! -
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de krimog
krimog 1863 Messages postés lundi 28 novembre 2005Date d'inscription 14 février 2015 Dernière intervention - 17 juin 2009 à 14:43
0
Utile
Salut.

Passe un bout de code please.

Krimog : while (!(succeed = try())) ;
- NON, "LE BAR" n'est PAS un langage de programmation ! -
Commenter la réponse de krimog
Souliabdo 186 Messages postés mercredi 14 mars 2007Date d'inscription 11 avril 2011 Dernière intervention - 17 juin 2009 à 14:51
0
Utile
for
(int i 0; i < Mygrid.Rows.Count; i++)<?xml:namespace prefix o ns = "urn:schemas-microsoft-com:office:office" /??>






            {






 







 







               
if (Mygrid.Rows[i].Cells[2].Value.ToString() == "True")






                {






                   
for (int j = 0; j < MydataTable.Rows.Count; j++)






                    {






                       
if (MyGrid.Rows[i].Cells[0].Value.ToString().CompareTo(MydataTable.Rows[j][0]) == 0)






                   
    {






                            MydataTable.Rows.RemoveAt(j);






                           

break
;






                        }






 







                    }






 







                }






            }

ici j'ai utilisé 2 boucle imbriqué pour  evité les erreur de ré indexation

en fait MyDataGrid à pour datasource Mydata table

et donc je pense que le problème de ré indexation se pose au niveau de 1er boucle for car à chaque fois qu'il y a une supression de ligne de MyDataTable les index de My DataGrid ne son plus les même

ce que je voulais faire ce de supprimer les lignes séléctionné dans le datagrid en passant par MydtaTable

merci pour votre aide
Commenter la réponse de Souliabdo
krimog 1863 Messages postés lundi 28 novembre 2005Date d'inscription 14 février 2015 Dernière intervention - 17 juin 2009 à 15:21
0
Utile
Peut-être qu'un i-- après avoir supprimé une ligne marchera...

Krimog : while (!(succeed = try())) ;
- NON, "LE BAR" n'est PAS un langage de programmation ! -
Commenter la réponse de krimog
Souliabdo 186 Messages postés mercredi 14 mars 2007Date d'inscription 11 avril 2011 Dernière intervention - 17 juin 2009 à 15:23
0
Utile
j'ai essayé aussi avec i--  marche pas comme il faut

ua il en équivalent de refrech en c#  pour rafrechir le datagrid aprés chaque suppression
Commenter la réponse de Souliabdo
Souliabdo 186 Messages postés mercredi 14 mars 2007Date d'inscription 11 avril 2011 Dernière intervention - 17 juin 2009 à 15:29
0
Utile
int j = MyDtaTable.Rows.Count - 1;<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /??>






           








            do






            {






               
                if (MyDatTable.Rows[j][3].ToString().Trim().CompareTo("asuppr") != 0)






                    MyDataTable.Rows.RemoveAt(j);






               








                j--;






            } while (j < 0);

j'ai rajouté une 3e colonne qui contient la mention "asuppr" si la ligne est cochée

ca marche non plus ....
Commenter la réponse de Souliabdo
krimog 1863 Messages postés lundi 28 novembre 2005Date d'inscription 14 février 2015 Dernière intervention - 17 juin 2009 à 15:33
0
Utile
Là tu fais la boucle à l'envers ! donc effectivement, il ne faut pas diminuer j

Soit tu fais le code que tu viens de poster sans le j--; soit tu fais le code d'avant avec un i--;

Krimog : while (!(succeed = try())) ;
- NON, "LE BAR" n'est PAS un langage de programmation ! -
Commenter la réponse de krimog
Souliabdo 186 Messages postés mercredi 14 mars 2007Date d'inscription 11 avril 2011 Dernière intervention - 17 juin 2009 à 15:38
0
Utile
en fait le j commence de n (taille du DataTab)int j MyDtaTable.Rows.Count - 1;<?xml:namespace prefix o ns = "urn:schemas-microsoft-com:office:office" /??>

danc si je fait pas le j-- comment je peux avancer dans les rows?

si non avec le i--

for (int i=MydataTable.rows.count-1, i==0,i--) c'est ca
Commenter la réponse de Souliabdo
Souliabdo 186 Messages postés mercredi 14 mars 2007Date d'inscription 11 avril 2011 Dernière intervention - 17 juin 2009 à 17:30
0
Utile
<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /??>







Supper Merci !!!






 






Ca
<?xml:namespace prefix st1 ns "urn:schemas-microsoft-com:office:smarttags" /??>
<st1:state>
<st1:place>
marche
</st1:place>
</st1:state>
comme je veux






 






Merci
Commenter la réponse de Souliabdo

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.