IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

ASP.NET Discussion :

Suppression d' éléments dans une liste.


Sujet :

ASP.NET

  1. #1
    Membre du Club
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juillet 2006
    Messages
    128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Bâtiment

    Informations forums :
    Inscription : Juillet 2006
    Messages : 128
    Points : 61
    Points
    61
    Par défaut Suppression d' éléments dans une liste.
    Bonjour,

    Je butte sur quelque chose de bête mais pas moyen de m'en sortir...

    J'utilise un composant (Infragistics, leur module de grid) dans laquelle j'ai des lignes que je souhaite supprimé quand certaines cellules ne sont pas renseignées.

    Je fais donc un "row.delete()" quand il est necessaire

    manque de chance à chaque interraction il décale les lignes, remplacant celle qui a été supprimé par la suivante (si celle-ci existe)
    Si bien que je ne peux pas faire de For each.

    J'ai essayé de faire ca en 2 étapes :
    - lister les index des lignes à supprimer
    - supprimer à partir du listing

    mais forcément j'en reviens au même problème.

    Existe t-il une solution simple ?

    Merci de votre aide.
    -----------------------------------------
    à l'origine PHP/Mysql. Pro : Asp.net/Vb/SQL/Webform siteweb

  2. #2
    Rédacteur

    Avatar de Jérôme Lambert
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2003
    Messages
    4 451
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 4 451
    Points : 14 357
    Points
    14 357
    Par défaut
    Fais un for en, commençant par la dernière ligne.
    Et lorsque tu supprimes une ligne, tu ne fais pas -1 sur ton compteur, mais -2.
    Jérôme Lambert
    Développeur, Architecte, Rédacteur & Fan technologies Microsoft
    Ma boite informatique | Mon profil LinkedIn

  3. #3
    Membre du Club
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juillet 2006
    Messages
    128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Bâtiment

    Informations forums :
    Inscription : Juillet 2006
    Messages : 128
    Points : 61
    Points
    61
    Par défaut boucle de suppression conditionnel.
    J'ai essayé ta technique, en retranchant 2, mais il me restait 2 lignes sur les 3 dans la grille.

    j'ai tenté en retranchant 1, il me reste une ligne sur les 3, ce qui n'est pas bon puisque mon test consiste à supprimer les lignes vides et dans ce cas là les 3.

    J'avais tenté hier la boucle en incrémentant.
    voici le code utiliser :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
           With uwgEvtPerso
                Dim nbRows = .Rows.Count - 1
                For i As Long = nbRows To 0 Step -1
                    If IsNothing(.Rows(i).Cells.FromKey("dtSemDebut").Value) OrElse IsNothing(.Rows(i).Cells.FromKey("dtSemFin").Value) Then
                        .Rows(i).Delete()
                        i -= 1
                    End If
                Next
            End With
    -----------------------------------------
    à l'origine PHP/Mysql. Pro : Asp.net/Vb/SQL/Webform siteweb

  4. #4
    Membre du Club
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juillet 2006
    Messages
    128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Bâtiment

    Informations forums :
    Inscription : Juillet 2006
    Messages : 128
    Points : 61
    Points
    61
    Par défaut
    Je pense avoir trouvé, je vais voir avec le temps, c'est tout bête finalement, il faut "annuler" le décalage effectuer par la suppression, de ce fait en commencant par la fin, comme on lit à l'envers, le décalage n'a pas d'influence

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
            With uwgEvtPerso
                Dim nbRows = .Rows.Count - 1
                For i As Long = nbRows To 0 Step -1
                    If IsNothing(.Rows(i).Cells.FromKey("dtSemDebut").Value) OrElse IsNothing(.Rows(i).Cells.FromKey("dtSemFin").Value) Then
                        .Rows(i).Delete()
                    End If
                Next
            End With
    Merci de votre aide
    -----------------------------------------
    à l'origine PHP/Mysql. Pro : Asp.net/Vb/SQL/Webform siteweb

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 2
    Dernier message: 18/04/2010, 11h15
  2. Suppression d'un élément dans une liste chainée
    Par jbarreau-mainson dans le forum Débuter
    Réponses: 1
    Dernier message: 06/05/2009, 15h49
  3. [debutant] insertion d'éléments dans une List
    Par gwenou60 dans le forum Composants
    Réponses: 1
    Dernier message: 05/12/2005, 09h59
  4. contrôler l'absence d'un élément dans une liste donnée
    Par gendalf37 dans le forum XSL/XSLT/XPATH
    Réponses: 1
    Dernier message: 12/09/2005, 10h02
  5. [Lisp] Suppression des parenthèses dans une liste
    Par bourdaillet dans le forum Lisp
    Réponses: 3
    Dernier message: 19/12/2004, 21h02

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo