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

C# Discussion :

Éliminer/ ne pas afficher certains articles dans une liste (ListView) selon un id [Débutant]


Sujet :

C#

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    316
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Avril 2010
    Messages : 316
    Points : 155
    Points
    155
    Par défaut Éliminer/ ne pas afficher certains articles dans une liste (ListView) selon un id
    Bonjour,

    Je veux eliminer/ ne pas afficher certains articles dans une liste (ListView) selon un id

    J'affiche ma liste avec tous les articles :

    nameId_____totoId....description
    11___________1...........école
    13___________3........... maison
    15___________2...........rue
    16___________1...........école

    Voici le code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     protected void MaListView_ItemDataBound(object sender, ListViewItemEventArgs e)
            {
                if (e.Item.ItemType == ListViewItemType.DataItem)
                {
                    System.Data.DataRowView rowView = e.Item.DataItem as System.Data.DataRowView;
                    ListViewDataItem dataItem = (ListViewDataItem)e.Item;
    Mais je veux que dans cette liste, les articles qui ont [3] dans leur >ID" ne s'affichent pas!

    Alors, je pense à faire une condition if comme celle - ci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Contrat ContratSW = WebServiceFactory.CreateInstance().CreateContratWebService();
    ContratStruct[] myContrats = ContratSW.GetContrats(nameIdItemDataBound);
     
    foreach (ContratStruct contrat in myContrats)
    {
       int totoId = contrat.WcNRTTotoId;
       if (!totoId.Equals(3))
       {
    	   ListViewDataItem.Add(contrat);  // c'est ici [Add] j'ai un message 
       }
    }
    'System.Web.UI.WebControls.ListViewDataItem' ne contient pas de définition pour 'Add'
    Alors comment je dois faire pour ne pas afficher les articles de totoId=3 ?

    Merci

  2. #2
    Membre expert
    Avatar de GuruuMeditation
    Homme Profil pro
    .Net Architect
    Inscrit en
    Octobre 2010
    Messages
    1 705
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : Belgique

    Informations professionnelles :
    Activité : .Net Architect
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2010
    Messages : 1 705
    Points : 3 570
    Points
    3 570
    Par défaut
    Tu peux, par exemple, faire un filtre (via linq) de ta collection avant de la binder a ta listview.

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    316
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Avril 2010
    Messages : 316
    Points : 155
    Points
    155
    Par défaut
    Citation Envoyé par GuruuMeditation Voir le message
    Tu peux, par exemple, faire un filtre (via linq) de ta collection avant de la binder a ta listview.
    Bonjour GuruuMeditation,

    Comment je peux faire un filtre ? avec une condition if comme je l'ai fait ?
    Et de le mettre avant de binder ?


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     foreach(ContratStruct contrat in myContrats)
    {
     
                        ListView.DataSource = ContratSW.GetContrats(s.PersonnelStruct.nameId);
                        ListView.DataBind();
    }

    Mais mon [Add] ne marche pas !!!

  4. #4
    Membre expert
    Avatar de GuruuMeditation
    Homme Profil pro
    .Net Architect
    Inscrit en
    Octobre 2010
    Messages
    1 705
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : Belgique

    Informations professionnelles :
    Activité : .Net Architect
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2010
    Messages : 1 705
    Points : 3 570
    Points
    3 570
    Par défaut
    Non, l'idée c'est plutôt style:
    Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    ListView.DataSource = ContratSW.GetContrats(s.PersonnelStruct.nameId).Where(d => d.WcNRTTotoId != 3);
    ListView.DataBind();

    Sans foreach

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    316
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Avril 2010
    Messages : 316
    Points : 155
    Points
    155
    Par défaut
    Salut GuruuMeditation,
    Super merci, mais j'ai un problème,
    après ton filtre, j'appelle la méthode ListIvew.DataBind et j'ai un message d'erreur (à Ligne : 82 ) :


    Détails de l'exception: System.InvalidOperationException: Un ListView avec l'ID 'ListView' doit avoir une source de données qui implémente ICollection ou qui peut effectuer la pagination de la source de données si AllowPaging a la valeur true.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ListView.DataSource = ContratSW.GetContrats(s.PersonnelStruct.nameId).Where(d => d.WcNRTTotoId != 3);
    ListView.DataBind();//Ligne : 82 !!!

    Est-ce que je dois faire une «*ICollection*» ? Comment peux-je l'éviter ? À quoi ça sert ? Sinon comment peux-je faire une «*ICollection*» ? Pourquoi je dois le faire ?

    En outre, je n'ai pas l'attribut AllowPaging="true*» par contre j'ai un contrôle <asp : DataPager...

  6. #6
    Membre habitué
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    316
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Avril 2010
    Messages : 316
    Points : 155
    Points
    155
    Par défaut
    il fallait ajouter :
    ToList()

    et voila solution :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ListView.DataSource = ContratSW.GetContrats(s.PersonnelStruct.nameId).Where(d => d.WcNRTTotoId != 3).ToList();

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

Discussions similaires

  1. Ne pas afficher certains usercontrols dans la toolbox
    Par jo_dalton dans le forum Visual Studio
    Réponses: 0
    Dernier message: 23/06/2011, 10h33
  2. Réponses: 2
    Dernier message: 21/04/2009, 21h10
  3. Réponses: 9
    Dernier message: 01/08/2008, 16h17
  4. afficher 2 champs dans une liste deroulante
    Par wave95 dans le forum SharePoint
    Réponses: 1
    Dernier message: 16/11/2007, 15h56
  5. Pas d'affiche d'items dans une list box
    Par breezer911 dans le forum Windows Forms
    Réponses: 1
    Dernier message: 08/03/2007, 17h06

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