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 :

indexation de liste déroulante


Sujet :

ASP.NET

  1. #1
    Membre confirmé
    Inscrit en
    Juillet 2008
    Messages
    70
    Détails du profil
    Informations forums :
    Inscription : Juillet 2008
    Messages : 70
    Par défaut indexation de liste déroulante
    Bonjour,

    Je dois réaliser une interface en ASP.net et je débute complètement dans ce langage.
    Dans cette interface, j'ai plusieurs cadres dans lesquels on trouve une dizaine de listes déroulantes liées chacune à une table de ma base de données.
    Celles ci porte comme nom, la source des données (ex: lst_discipline).
    Un cadre correspond à une application. Donc en gros plus j'aurais d'application a gérer, plus le nombre de cadre et donc de liste sera important.

    Mon objectif sera de gérer ces listes de la manière la plus générique possible afin de ne pas avoir a répertorier X fois le nombre d'application fois le nombre de listes, le code pour renseigner celle ci. Je cherche donc à savoir si il est possible (un peu comme en VB) d'indexer ces listes afin de passer dans une boucle for ou autre, une valeur qui servira d'index pour la sélection des listes (ex: lst_displine[i]) afin de faire une seul fonction pour l'insertion, ou la sélection des données de ces listes.

    La question est donc: est ce possible d'indexer des listes déroulantes pour répondre a ce besoin ?

    Si je n'ai pas été assez claire, n'hésitez pas a me demander plus de précision.

    Merci d'avance pour votre aide.

  2. #2
    Membre chevronné Avatar de jacky01
    Profil pro
    Développeur .NET
    Inscrit en
    Juin 2007
    Messages
    537
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Juin 2007
    Messages : 537
    Par défaut
    Bonjour,

    Si j'ai bien compris tu veux ajouter de manière dynamique un nombre X de ListBox en fonction du nombre d'appli que tu devra géré. Est-ce ça ?

  3. #3
    Membre confirmé
    Inscrit en
    Juillet 2008
    Messages
    70
    Détails du profil
    Informations forums :
    Inscription : Juillet 2008
    Messages : 70
    Par défaut
    En gros oui.

    y a aussi le fait de récupérer les données de ces listes box, ne pas avoir répéter X fois les même opérations par liste box par application

    Visuellement, mon appli ressemble a ceci:

    Appli1
    listeboxdiscipline1
    listeboxrole1

    Appli2
    listeboxdiscipline2
    listeboxrole2

    [...]

    Bon, pour l'instant, j'ai 4 applis (plus a venir) et 10 listes box sûr pour chaque appli (pas de nouvelles à venir)
    J'aimerai indexer (ou regrouper sous un indice commun) chaque "bloc" applis.
    J'ai penser à un nommage générique des listes avec concaténation de l'indice par la suite, mais je ne sais pas si c'est possible.

  4. #4
    Membre chevronné Avatar de jacky01
    Profil pro
    Développeur .NET
    Inscrit en
    Juin 2007
    Messages
    537
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Juin 2007
    Messages : 537
    Par défaut
    Ba après je dirais que la solution dépendra de la forme sous laquelle tu récupère les infos de ta base.

    Tu récupère quoi ?

  5. #5
    Membre confirmé
    Inscrit en
    Juillet 2008
    Messages
    70
    Détails du profil
    Informations forums :
    Inscription : Juillet 2008
    Messages : 70
    Par défaut
    la valeur d'une ligne sélectionné (dans mon cas une id d'une ligne de table)
    C'est liste box renvoi les valeurs de tables de ma base de données.
    Je récupère les .value de chaque liste pour mettre ensuite a jour une table de fait.

  6. #6
    Membre chevronné Avatar de jacky01
    Profil pro
    Développeur .NET
    Inscrit en
    Juin 2007
    Messages
    537
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Juin 2007
    Messages : 537
    Par défaut
    Euh j'ai pas tout compris ^^

  7. #7
    Membre confirmé
    Inscrit en
    Juillet 2008
    Messages
    70
    Détails du profil
    Informations forums :
    Inscription : Juillet 2008
    Messages : 70
    Par défaut
    C'est ma faute, j'ai lus trop vite la question.

    Je récupère dans mes listes les résultats d'une proc stoc passé au travers d'un dataview
    exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    DDL_ROLE2.DataSource = CreateDataView("2", "ROLE");
    DDL_ROLE2.DataTextField = "TextField";
    DDL_ROLE2.DataValueField = "ValueField";
    DDL_ROLE2.DataBind();
    le CreateDataView("2", "ROLE") est une fonction qui va créer le dataview. Les paramètre passé dans l'appel de fonction sont les id de l'application (ici l'appli 2) et la table (ici role) que dans et pour lesquels on va chercher les valeurs pour la liste.

    J'essai de coder de la façon la plus générique possible (je m'inspire un peu du framework MVC que l'on va chercher à implémenter plus tard).

    Ce que je cherche a obtenir serai quelque chose dans ce style là
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    For i de 0 à n (ou n serai le nombre d'appli)
    {
    listeboxdiscipline[i].quelquechose
    listeboxrole[i].quelquechose
    [...]
    }
    le but étant de ne pas a avoir à répéter x fois le nombre d'appli, mes listes box pour les différentes opération (insertion de valeur ou récupération des valeurs).

    Pour l'instant j'ai tout coder en dur pour mes tests de fonctions. ca me donne 4 bloc de dix listes a recopier à chaque fois. j'aimerai bien généraliser tout ca d'où l'idée d'indexé un peu comme en vb

  8. #8
    Membre chevronné Avatar de jacky01
    Profil pro
    Développeur .NET
    Inscrit en
    Juin 2007
    Messages
    537
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Juin 2007
    Messages : 537
    Par défaut
    OK bon ça m'éclaire un peu ^^

    Autres question : comment récupère-tu le nombre d'appli que tu devra afficher ? c'est une requête aussi je suppose ? mais le retour est de quel type ? Int, List<T>, dictionnary ... ?

    Au pire un bout de code serais bien ^^ si cela est possible.

  9. #9
    Membre confirmé
    Inscrit en
    Juillet 2008
    Messages
    70
    Détails du profil
    Informations forums :
    Inscription : Juillet 2008
    Messages : 70
    Par défaut
    Yop, j'ai trouvé une solution un peu bourrine mais qui marche:

    Mes listes sont pour l'instant en dure mon ma page aspx et nommer de la facon suivant
    DDL_<Nom de la table>_<code appli> ex: DDL_ROLE_RETX

    et voici un extract de mon code pour les alimenter (je ne montre que pour 1 dropdownlist)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
     
    protected void FillDropDownList(string userId)
            {
                string stringfunction = GetFildList(userId); // Je vais chercher les données à mettre dans mes listes
                SqlDataReader rdr = CreateReader(stringfunction);
                rdt.Load(rdr); //je renseigne un datatable
                rdr.Close();
     
                foreach (DataRow r in AppliCode.Rows) // AppliCode est un datatable qui contient toute les appli avec 2 colonnes: l'id et le code de l'appli
                {
                    string  code = r[1].ToString();
     
                    // ROLE
                    string ddlName = "DDL_ROLE_";
                    ddlName += code.ToString();
                    DropDownList ddl = (DropDownList)FindControl(ddlName);
                    ddl.DataSource = CreateDataView(r[0].ToString(), "ROLE"); //cette fonction retourne un dataview qui contient les éléments de la table qui m'interesse, pour une appli donnée
                    ddl.DataTextField = "TextField";
                    ddl.DataValueField = "ValueField";
                    ddl.DataBind();
    }
    }
    Les noms de chaque dropdownlist sont pour le moment renseigner en dur, mais vont être stockés dans une table avec leur type pour ensuite être récupéré de façon automatique par l'appli au chargement de la page.
    A terme, les contrôles seront aussi créer dynamiquement à partir des données de cette "table de contrôle".
    Chaque chose en sont temps.

    Merci pour votre aide.

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

Discussions similaires

  1. [AC-2002] Problème champ index et liste déroulante
    Par vortexlechien dans le forum IHM
    Réponses: 3
    Dernier message: 15/05/2009, 23h44
  2. [MySQL] Indexer une liste déroulante sur le champ d'une table
    Par RootsRagga dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 01/12/2008, 21h39
  3. Index et affichage d'une page selon liste déroulante
    Par weezer999 dans le forum Langage
    Réponses: 4
    Dernier message: 29/04/2008, 15h15
  4. Listes déroulantes et indexes
    Par Kilgayne dans le forum IHM
    Réponses: 2
    Dernier message: 04/05/2007, 17h26
  5. Utiliser les index de listes déroulantes dans un bloc séparé ?
    Par debie1108 dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 03/05/2007, 08h43

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