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 :

[VB.NET] [2.0] tri sur un dropdown


Sujet :

ASP.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre à l'essai
    Inscrit en
    Décembre 2006
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 5
    Par défaut [VB.NET] [2.0] tri sur un dropdown
    Bonjour à tous,

    J'ai un dropdown que je peuple a partirr d'une vue. Dans la vue elle est triée en ordre alphabétique. La requête de mon datasource est la suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT Null AS RegionId, 'Choissisez votre région' AS NomRegion
    UNION 
    SELECT * FROM [vwRegion]
    Pour mettre une valeur par défaut j'ai fait une requête avec un union.

    Cependant lorsque que mon dropdown s'affiche les valeurs qui sont triées dans ma vue ne le sont plus.

    Est-ce possible que les datasource de .net ne tiennent pas compte des 'ORDER BY' dans les vues???

    ---
    J-F

  2. #2
    Membre expérimenté

    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    249
    Détails du profil
    Informations personnelles :
    Âge : 57
    Localisation : France, Marne (Champagne Ardenne)

    Informations forums :
    Inscription : Novembre 2006
    Messages : 249
    Par défaut
    Sinon tu fais un order by sur ton union...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    (SELECT Null AS RegionId, 'Choissisez votre région' AS NomRegion
    UNION 
    SELECT RegionId, NomRegion FROM [vwRegion])
    ORDER BY RegionId, NomRegion
    Et tu auras ce que j'ai dans pas mal de mes webforms...

  3. #3
    Membre à l'essai
    Inscrit en
    Décembre 2006
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 5
    Par défaut
    Cependant puisque je désire faire un tri sur le nom des régions et que j'y ajoute une valeur par défaut elle aussi sera triée et je tiens à l'avoir en tête de liste.

    Est-ce normal que le tri effectué dans ma vue ne soit pas conservée?

  4. #4
    Membre éprouvé
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    110
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2006
    Messages : 110
    Par défaut
    Personnellement je te conseil de rajouter une colonne "factice" pour faire ton trie comme tu l'entends du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT Null AS RegionId, 'Choissisez votre région' AS NomRegion, 0 As OrdreDefaut
    UNION 
    SELECT *, 1 As OrdreDefaut FROM [vwRegion]
    Reste à faire ton tri du genre "Order by OrdreDefaut, RegionId"

    Pour ce qui est du tri / filtre, j'utilise personnellement les objets dataview comme datasource qui fonctionne tout le temps avec les proprietés sort et rowfilter

  5. #5
    Membre expérimenté

    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    249
    Détails du profil
    Informations personnelles :
    Âge : 57
    Localisation : France, Marne (Champagne Ardenne)

    Informations forums :
    Inscription : Novembre 2006
    Messages : 249
    Par défaut
    J'ai trouvé plus sympa :

    La propriété AppendDataBoundItems permet d'ajouter les items du datasource à la liste sans supprimer la liste initiale.

    Exemple ci-dessous :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <asp:DropDownList ID="cbFour" runat="server" DataSourceID="dsFour" DataTextField="NOM_FOUR"
    DataValueField="ID_FOUR" AppendDataBoundItems="True">
    <asp:ListItem Selected="True" Value="0"> Tous </asp:ListItem>
    </asp:DropDownList>
    Sinon, on ne met généralement pas de Order By dans une vue...

    Donc il est fort possible que ton order by ne soit pas pris en compte

    La requête sera donc :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT * FROM [vwRegion] ORDER BY NomRegion
    Je suis assez fier de ma trouvaille !... Reste plus qu'à supprimer toutes mes union...

  6. #6
    Membre à l'essai
    Inscrit en
    Décembre 2006
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 5
    Par défaut
    Merci pour le truc, en effet... ça évite d'ajouter des union pour rien.

    Mais je trouve toutefois un peu bizarre qu'on ne devrais pas ajouter de "ORDER BY" dans une vue si celle-ci le sauvegarde lorsqu'on l'ajoute et que ça fonctionne lorsqu'on l'appelle sous SQL.

    Si quelqu'un peux me renseigner à ce sujet! Puisque j'appelle des vues qui génèrent un ordre aléatoire et conserve que les 3 premiers enregistrement, j'ai peur que les données retournés soit toujours les mêmes.

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

Discussions similaires

  1. [ASP.NET 2.0][C#] Tri sur un GridView avec actions
    Par Wishmaster dans le forum ASP.NET
    Réponses: 3
    Dernier message: 13/09/2007, 14h44
  2. [VB.NET] Problème de tri sur Datagrid/gridview multilingue
    Par crimsonPhantom dans le forum ASP.NET
    Réponses: 4
    Dernier message: 16/03/2006, 22h41
  3. [VB.Net] Faire du JS sur des contrôles côté serveur
    Par TagadaTsoin dans le forum ASP.NET
    Réponses: 4
    Dernier message: 03/11/2003, 15h51
  4. tri sur la xème colonne
    Par r-zo dans le forum Langage SQL
    Réponses: 5
    Dernier message: 23/07/2003, 13h41
  5. [VB6] [MSHFlexGrid] Tri sur clic dans la première ligne
    Par degreste dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 06/03/2003, 00h42

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