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 :

Ajouter un élément "TOUT" sur une liste.


Sujet :

ASP.NET

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    8
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations forums :
    Inscription : Octobre 2005
    Messages : 8
    Par défaut Ajouter un élément "TOUT" sur une liste.
    Bonjour,

    Ne maitrisant pas bien ASP.NET, je vous présente rapidement mon problème :

    J'ai une base de données avec deux tables :
    1. Table "serveur" : IdServeur, NomServeur
    2. Table "tickets : IdTicket, IdServeur, Description


    Je souhaite sur ma page avoir un DropDownList contenant la liste de mes serveurs, et une grille en dessous affichant les Tickets du serveur sélectionné. Jusque la, pas de problème, "autopostback" et tout le toutim... impect ca marche.

    Maintenant je souhaite donner la possibillité d'afficher tous les tickets de tous les serveurs. Il faut donc ajouter un élément "Tout" dans la liste des serveurs...déjà, là problème !!
    et ensuite adapter la requete du GridView en fonction du choix.
    Dans 1 cas la requete sera du genre : select * from Tickets Where IdServeur = xxx
    et dans l'autre cas sera du genre : select * from Tickets -> sans clause where.

    J'ai réussi a faire un truc qui fonctionne (mais je suis sûre qu'il y a plus simple et surtout plus propre) en faisant une requete UNION sur la liste pour ajouter un elements "TOUT" donc l'ID et "%", et dans la requete de mon GridView la requete est Select * from Tickets Where IdServeur like 'xxxxx'. Donc si on sélectionne "TOUT", la requete du GridView est SELECT * FROM Tickets WHERE IdServeur LIKE '%' (burk !!!).

    Ca marche !! Mais ca fait pas propre.

    Si quelqu'un peut m'aiguiller sur la solution propre.

    Merci.

  2. #2
    Membre émérite
    Inscrit en
    Août 2006
    Messages
    550
    Détails du profil
    Informations personnelles :
    Âge : 50

    Informations forums :
    Inscription : Août 2006
    Messages : 550
    Par défaut
    L'union c'est bon, mais à la place du '%', tu mets 0 (zéro). par défaut l'identifiant 0 n'existe pas (enfin j'espère)

    La requête :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    select * from Tickets Where (IdServeur = @Id) or (@Id = 0)

  3. #3
    Membre chevronné Avatar de predalpha
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    392
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 392
    Par défaut
    Petite suggestion : les dropdownlist possèdent une méthode appendmachinchose qui te permet par exemple de créer un premier élément dans la DDL et de lui coller le résultat de ta requete.

    Donc tu crées la DDL avec TOUT en premier élément ou item. Tu lui mets value=0.
    Puis tu fais ta requetes des serveur que ta DDL aura comme datasource.

    Ta seconde requête n'auras qu'à tester si ta première valeur = 0 --> dans ce cas tu selectionnes tout ou <> 0 et là tu affiches les tickets du server correspondant.

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    8
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations forums :
    Inscription : Octobre 2005
    Messages : 8
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    select * from Tickets Where (IdServeur = @Id) or (@Id = 0)
    Purée, pourquoi ne pas y avoir pensée plutot. Effectivement cette solution me semble parfaite. J'essaie cela dés demain.
    P'tit détail mon identifiant est un GUID, mais ca fonctionnera avec " @id <> '' ".

    Concernant la propriété appendmachinchose je vais aussi la tester pour comparer, et vous ferais part des résultats.

    Merci.

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    8
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations forums :
    Inscription : Octobre 2005
    Messages : 8
    Par défaut Résultat des tests.
    Alors pour commencer le appendmachinchose :
    Il s'agit en fait de la propriété AppendDataBoundItems
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <asp:DropDownList ID="ddlServeurs" runat="server" AutoPostBack="True" 
            DataSourceID="dsOrdinateur" DataTextField="Nom" 
            DataValueField="GUID" CssClass="ddlServeur" 
            AppendDataBoundItems="True">
            <asp:ListItem Selected="True" Value="0" Text="Tout">Tout</asp:ListItem>
    </asp:DropDownList>
    Le fait de la passer a TRUE permet donc de concatener la valeur du ListItem et celles de la source de données.

    Ensuite concernant la requete et mon ID de type "uniqueIdentifier", il a fallut passer par des conversions en varchar.
    La clause WHERE de ma requete donne ceci :


    Résultat, je trouve cela plus propre que ma requete UNION.

    Merci de vos contributions.

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

Discussions similaires

  1. [MVVM] Détecter l'ajout d'un élément sur une liste
    Par Digilougm dans le forum Silverlight
    Réponses: 10
    Dernier message: 16/06/2011, 11h10
  2. [2.0] : Ajouter un item en tout début d'une DropDownList
    Par stephane.net dans le forum ASP.NET
    Réponses: 2
    Dernier message: 16/11/2006, 16h50
  3. [Dates] Calcul tout bête sur une date...
    Par poah dans le forum Langage
    Réponses: 5
    Dernier message: 01/11/2005, 15h02

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