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 :

Liste d'articles classée par dates


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2006
    Messages
    228
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 228
    Par défaut Liste d'articles classée par dates
    Bonjour,

    Je ne sais pas par quel bout prendre mon problème.

    Partons du principe que j'ai une table MaTable[id, date, titre, texte]

    Je souhaite créer une liste de "ajaxToolkit:Accordion" ayant pour header "MOIS12", "MOIS11", etc. Et en contenu mes articles DANS LE BON accordion.

    Suis-je assez explicite ?

    Merci de votre aide ?

  2. #2
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Par défaut
    Bonjour

    Pour faire cela, le plus simple est d'utiliser les fonctions de fénétrage en SQL.

    http://sqlpro.developpez.com/cours/sqlaz/fonctions/

    Pour te donner un exemple, il faudrait connaitre le SGBD utilisé.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2006
    Messages
    228
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 228
    Par défaut
    Le SGBD est MySQL.

    Mon champs date est au format "19/03/2012"

    En header de mon accordionPane je voudrais par exemple "MARS 2012" et dans le content, les articles dont la date est de ce mois.

  4. #4
    Membre très actif
    Homme Profil pro
    Developpeur
    Inscrit en
    Décembre 2011
    Messages
    111
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Congo-Kinshasa

    Informations professionnelles :
    Activité : Developpeur
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2011
    Messages : 111
    Par défaut
    Salut,par rapport à ton problème il y a quelques mises au points à faire:
    1.Selon la loi de la Base des Données(Les approches de la conception),il est strictement interdit d'utiliser des Champs Composés(Les Agrégations).
    2.Il faut rendre elementaire tes champs Càd:
    Qu'il ait un champs Jour,Mois,Année.
    C'est pour cela t'as de problème lorsque tu veux prendre une valeur Composant la Date.
    Bon Passons à la Programmation:
    Ta listBox doit afficher les données par Date?
    il suffit juste de faire une requête de Trie en utilisant la Clause Where par rapport à la date démandée
    Exemple:
    Affichez les produits vendues le 12/01/2012
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Req="Select libproduit,prix_produit,Date_Vendue From Vente where Date_Vendu='12/01/2012'";
    Merci

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2006
    Messages
    228
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 228
    Par défaut
    Bonjour et merci pour l'aide.

    Mon problème n'est pas la requête sql (j'en fais à longueur de journée).

    J'ai donc dû mal m'exprimer.

    Mon problème EN C# c'est de :

    1. de créer une liste de mois à partir des dates de ma table
    2. Créer des AccordionPane avec cette liste descendante (header)
    3. Mettre les titres dans le bon AccordionPane (content)

    Je n'arrive pas à utiliser les Accordion dans mon code behind car je n'arrive pas à trouver le bon using ... Ca part donc déjà mal

  6. #6
    Expert confirmé
    Avatar de StringBuilder
    Homme Profil pro
    Chef de projets
    Inscrit en
    Février 2010
    Messages
    4 197
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projets
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2010
    Messages : 4 197
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par Hlama Voir le message
    2.Il faut rendre elementaire tes champs Càd:
    Qu'il ait un champs Jour,Mois,Année.
    C'est pour cela t'as de problème lorsque tu veux prendre une valeur Composant la Date.
    En quel honneur ?

    Une date est une valeur unitaire. Il n'y a pas lieu de la décomposer, et ce, pour X raisons :
    - Comment mettre en place des contraintes sur les mois et jours, si les champs ne sont pas liés ?
    - Comment convertir une date d'un calendrier à un autre
    - Tu fais comment si je te dis que je désire la liste des jours de la semaine 25 ?

    Au contraire, la date doit être stockée dans un unique champ, dans le type dédié. Ensuite, on dispose de toutes les fonctions pour :
    - formater la date pour l'affichage
    - la trier chronologiquement
    - la filtrer

    Et le problème viens bien de la requête SQL :
    - Il faut récupérer la date de tes articles au format MOIS-ANNÉE
    - Il faut les trier par date

    Et ensuite au niveau de C# tu te contente de changer de pane lorsque tu changes de mois. Mais les données doivent être déjà triées et formatées en amont !

    Quel SGBD utilises-tu ?

  7. #7
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Par défaut
    Citation Envoyé par StringBuilder Voir le message
    Ensuite, on dispose de toutes les fonctions pour :
    - formater la date pour l'affichage
    - la trier chronologiquement
    - la filtrer

    Et le problème viens bien de la requête SQL :
    - Il faut récupérer la date de tes articles au format MOIS-ANNÉE
    - Il faut les trier par date
    Non, si j'ai bien compris,il veut un regroupement par mois. Et c'est précisément une application facile des fonctions de fenétrage. (question : MySql supporte-t-il les fonction de fenétrage ?? je n'en sais rien; c'est du standard SQL 2005, mais avec MySql il faut s'attendre à tout).

    Et ensuite au niveau de C# tu te contente de changer de pane lorsque tu changes de mois. Mais les données doivent être déjà triées et formatées en amont !
    +1

  8. #8
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Par défaut
    Citation Envoyé par Hlama Voir le message
    Salut,par rapport à ton problème il y a quelques mises au points à faire:
    1.Selon la loi de la Base des Données(Les approches de la conception),il est strictement interdit d'utiliser des Champs Composés(Les Agrégations).
    Depuis quand une date est un champs composé ? (tant est qu'on utilise un champs de type DATE, et pas un stockage exotique en chaine de caractére).
    Une date est un champ atomique au sens de la 1FN

    2.Il faut rendre elementaire tes champs Càd:
    Qu'il ait un champs Jour,Mois,Année.
    Portnawak !!!!

  9. #9
    Expert confirmé
    Avatar de StringBuilder
    Homme Profil pro
    Chef de projets
    Inscrit en
    Février 2010
    Messages
    4 197
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projets
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2010
    Messages : 4 197
    Billets dans le blog
    1
    Par défaut
    Je t'aiderais bien un peu plus, mais je sais pas ce que c'est qu'un Accordion ni d'où sortent les "ajaxtoolkit" dont tu parles

  10. #10
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2006
    Messages
    228
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 228
    Par défaut
    Je parle des composants Ajax Control Toolkit :

    http://www.asp.net/ajaxLibrary/AjaxC...Accordion.aspx

    En fait, je veux le remplir dynamiquement.

    Dans le Header => MARS 2012

    Dans le Content => la liste des articles

  11. #11
    Expert confirmé
    Avatar de StringBuilder
    Homme Profil pro
    Chef de projets
    Inscrit en
    Février 2010
    Messages
    4 197
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projets
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2010
    Messages : 4 197
    Billets dans le blog
    1
    Par défaut
    A mon avis, tu vas devoir faire le binding 100% à la main, car ça semble fonctionner avec 1 titre = 1 texte, alors que toi c'est 1 titre = n articles.

    Du coup je ferais de la sorte :
    - Parcours du résultat de la requête, en alimenant un Dictionary<string, string>
    Dans la clé = mois
    Dans la valeur = concaténation de tous les articles du mois en question
    - Binding de ton contrôle en utilisant le dictionnaire

  12. #12
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2006
    Messages
    228
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 228
    Par défaut
    Je suis sur une autre piste : http://dotnet.developpez.com/ajax/aj...ing-accordion/

    J'ai déjà réussi à créer mes Panes avec un Header comme je veux.

    Par contre, pour le Content, il me faudrait une requête du genre :

    select * from maTable where date in "Mars 2010"

    tu vois l'idée ? Je mettrais un SqlDataSource dans chaque Content avec comme paramètre le Header ...

  13. #13
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2006
    Messages
    228
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 228
    Par défaut
    Well, une requête qui fonctionne :

    select id, titre, date from tb_une where DATE_FORMAT(date, '%M %Y') = "March 2012"

    Par contre, du coup, j'avais pas fait attention mais TOUT est en anglais

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 05/10/2007, 15h56
  2. [CLI] Liste les modifications par date ?
    Par eplic dans le forum CVS
    Réponses: 0
    Dernier message: 03/08/2007, 12h06
  3. [Spip] afficher tous mes articles de la rubrique sauf les 4 derniers (par date)
    Par kikirun dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 1
    Dernier message: 28/06/2007, 17h01
  4. trier une liste de répertoire par date de création
    Par airod dans le forum Général Python
    Réponses: 9
    Dernier message: 10/12/2006, 20h17
  5. [JSP] Trier par date une liste de fichier en JSP
    Par Total dans le forum Servlets/JSP
    Réponses: 10
    Dernier message: 21/02/2006, 15h38

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