Supprimer des lignes d'un datatable

Résolu
Souliabdo Messages postés 186 Date d'inscription mercredi 14 mars 2007 Statut Membre Dernière intervention 11 avril 2011 - 17 juin 2009 à 13:48
Souliabdo Messages postés 186 Date d'inscription mercredi 14 mars 2007 Statut Membre Dernière intervention 11 avril 2011 - 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….

9 réponses

krimog Messages postés 1860 Date d'inscription lundi 28 novembre 2005 Statut Membre Dernière intervention 14 février 2015 49
17 juin 2009 à 15:57
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 ! -
3
krimog Messages postés 1860 Date d'inscription lundi 28 novembre 2005 Statut Membre Dernière intervention 14 février 2015 49
17 juin 2009 à 14:43
Salut.

Passe un bout de code please.

Krimog : while (!(succeed = try())) ;
- NON, "LE BAR" n'est PAS un langage de programmation ! -
0
Souliabdo Messages postés 186 Date d'inscription mercredi 14 mars 2007 Statut Membre Dernière intervention 11 avril 2011 2
17 juin 2009 à 14:51
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
0
krimog Messages postés 1860 Date d'inscription lundi 28 novembre 2005 Statut Membre Dernière intervention 14 février 2015 49
17 juin 2009 à 15:21
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 ! -
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Souliabdo Messages postés 186 Date d'inscription mercredi 14 mars 2007 Statut Membre Dernière intervention 11 avril 2011 2
17 juin 2009 à 15:23
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
0
Souliabdo Messages postés 186 Date d'inscription mercredi 14 mars 2007 Statut Membre Dernière intervention 11 avril 2011 2
17 juin 2009 à 15:29
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 ....
0
krimog Messages postés 1860 Date d'inscription lundi 28 novembre 2005 Statut Membre Dernière intervention 14 février 2015 49
17 juin 2009 à 15:33
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 ! -
0
Souliabdo Messages postés 186 Date d'inscription mercredi 14 mars 2007 Statut Membre Dernière intervention 11 avril 2011 2
17 juin 2009 à 15:38
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
0
Souliabdo Messages postés 186 Date d'inscription mercredi 14 mars 2007 Statut Membre Dernière intervention 11 avril 2011 2
17 juin 2009 à 17:30
<?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
0
Rejoignez-nous