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

Messages postés
186
Date d'inscription
mercredi 14 mars 2007
Dernière intervention
11 avril 2011
- 17 juin 2009 à 13:48 - Dernière réponse :
Messages postés
186
Date d'inscription
mercredi 14 mars 2007
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….
Afficher la suite 

Votre réponse

9 réponses

Meilleure réponse
Messages postés
1863
Date d'inscription
lundi 28 novembre 2005
Dernière intervention
14 février 2015
17 juin 2009 à 15:57
3
Merci
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 ! -

Merci krimog 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 90 internautes ce mois-ci

Commenter la réponse de krimog
Messages postés
1863
Date d'inscription
lundi 28 novembre 2005
Dernière intervention
14 février 2015
17 juin 2009 à 14:43
0
Merci
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
Messages postés
186
Date d'inscription
mercredi 14 mars 2007
Dernière intervention
11 avril 2011
17 juin 2009 à 14:51
0
Merci
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
Messages postés
1863
Date d'inscription
lundi 28 novembre 2005
Dernière intervention
14 février 2015
17 juin 2009 à 15:21
0
Merci
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
Messages postés
186
Date d'inscription
mercredi 14 mars 2007
Dernière intervention
11 avril 2011
17 juin 2009 à 15:23
0
Merci
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
Messages postés
186
Date d'inscription
mercredi 14 mars 2007
Dernière intervention
11 avril 2011
17 juin 2009 à 15:29
0
Merci
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
Messages postés
1863
Date d'inscription
lundi 28 novembre 2005
Dernière intervention
14 février 2015
17 juin 2009 à 15:33
0
Merci
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
Messages postés
186
Date d'inscription
mercredi 14 mars 2007
Dernière intervention
11 avril 2011
17 juin 2009 à 15:38
0
Merci
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
Messages postés
186
Date d'inscription
mercredi 14 mars 2007
Dernière intervention
11 avril 2011
17 juin 2009 à 17:30
0
Merci
<?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.