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 :

ASP.NET GridView avec DropDownList et DataSourceID multiples


Sujet :

ASP.NET

  1. #1
    Membre �prouv�
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    133
    D�tails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyr�n�es)

    Informations forums :
    Inscription : Juin 2009
    Messages : 133
    Par d�faut ASP.NET GridView avec DropDownList et DataSourceID multiples
    Bonjour,
    J'ai une question un peu d�licate car je suis entrain d'effectuer des recherches sur une solution possible � un probl�me que je rencontre :
    Je voudrais afficher une liste de ComboBox dont je ne connais pas par avance le nombre exacte, alors j'ai pens� � un asp:GridView avec une colonne Template qui va h�berger un DropDownList, jusque l� aucune difficult� � noter.
    MAIS, est-il possible de faire en sorte que pour chaque ligne que je vais cr�er manuellement dans le code, le DropDownList ait une source de donn�es individuelle ?
    Je m'explique, par l'approche classique, que ce soit en remplissant � la main ma DropDownList par des ListItem ou par un DataSourceID, toutes mes DropDownList auront les m�mes donn�es, logique ! Et c'est justement l� o� je voudrais agir, pour chaque ligne, pouvoir assigner une source de donn�es diff�rente � mon DropDownList...
    Si vous avez une id�e dessus ou alors une toute autre suggestion, je suis preneur. Merci par avance !
    Nachtigal!!

  2. #2
    Membre �prouv�
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    133
    D�tails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyr�n�es)

    Informations forums :
    Inscription : Juin 2009
    Messages : 133
    Par d�faut
    En recherchant ici et l� au cas o�, je me suis dit que je pourrais tout aussi bien ajouter mes DropDownList dynamiquement dans un control Panel, tout simplement. Par contre pour styler le tout en CSS c'est pas gagn� !!
    Je continue mes investigations !!

  3. #3
    Membre averti
    Homme Profil pro
    Inscrit en
    Avril 2012
    Messages
    37
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2012
    Messages : 37
    Par d�faut
    Salut en le cr�ant � la main une gridview de 2 lignes, tu peux regarder si c'est faisable d'avoir 2 ddl de source diff�rente.

  4. #4
    Membre exp�riment�
    Homme Profil pro
    Inscrit en
    Septembre 2009
    Messages
    220
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 220
    Par d�faut
    Ce que tu veux faire doit �tre possible. Je suppose que ce que tu veux c'est que les DDL ait la m�me source de donn�es mais avec des param�tres diff�rents. C'est � dire la m�me requ�te mais en prenant des donn�es relatives � la ligne de la GV ou se situe la DDL?

    Si tel est le cas, niveau perf, ca va pas �tre terrible puisque pour chaque ligne de ta GV tu vas faire une requ�te. Mais tu peux le faire dans la m�thode OnDataBound() de ta GV. Il te faudra s�rement utiliser findcontrol() pour acc�der � tes DDL et les alimenter.

  5. #5
    Membre �prouv�
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    133
    D�tails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyr�n�es)

    Informations forums :
    Inscription : Juin 2009
    Messages : 133
    Par d�faut
    Je vous remercie pour vos contributions.
    papouuu, c'est effectivement faisable en interceptant l'�v�nement OnDataBound, mais c'est une prise de t�te inutile pour les r�sultats obtenus.
    Alors j'ai chang� les donn�es du probl�me pour pouvoir le r�soudre, car finalement on peut donner l'illusion de ligne de table en g�n�rant son code � la vol�e, c'est la piste que j'ai poursuivie...
    Dans une Web Application, tu mets ceci dans la partie Html

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
     
    <asp:Panel ID="MainPanel1" runat="server" GroupingText="Panels imbriqués et plusieurs Combox dynamiques">
        </asp:Panel>
    et dans le code behind tu colles ce code :

    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
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
     
    public partial class WebForm3 : System.Web.UI.Page
        {
            private int nbrpanels = 2;
     
            private String[] list1 = { "stanley", "florence", "capuccins", "gutenberg", "limbe" };
            private String[] list2 = { "moneurone", "jesuites", "nachtigal" };
            private String[] list3 = { "logone", "adzap", "benoue", "zoulou", "mezali" };
            private String[] list4 = { "HiddenField", "Calendar", "ImageMap", "Label", "Literal" };
     
            protected void Page_Load(object sender, EventArgs e)
            {
     
            }
     
            protected override void OnInit(EventArgs e)
            {
                base.OnInit(e);
     
                //on génère nos controls dans une boucle!!
                for (int k = 1; k <= nbrpanels; k++)
                {
                    //ns avons un idx en ligne
                    DropDownList ddl = new DropDownList() { ID = "ddl" + k.ToString(), AutoPostBack = true };
                    ddl.Style["width"] = "240px";
                    //ddl.Style["padding-right"] = "15px";
                    ddl.Style["padding-left"] = "5px";
                    //ddl.CssClass
     
                    //source de données propre à ce Control!!
                    switch (k)
                    {
                        case 1:
                            ddl.DataSource = list1;
                            break;
                        case 2:
                            ddl.DataSource = list2;
                            break;
                        case 3:
                            ddl.DataSource = list3;
                            break;
                        default:
                            break;
                    }
     
                    ddl.DataBind();
     
                    ddl.SelectedIndexChanged += new EventHandler(OnSelectedIndexChanged);
     
                    //on met le titre du combox, en réalité est fourni par une propriété de l'objet
                    Label titre = new Label();
                    titre.Text = "Combox " + k.ToString(); 
     
                    //on met un label pour les comptes-rendus
                    Label label = new Label();
                    label.ID = "Label" + k.ToString();
                    label.Style["padding-left"] = "15px";
                    //label.CssClass
     
                    //on met tout ça dans un Panel dynamique
                    Panel panel = new Panel();
                    panel.ID = "Panel" + k.ToString();
     
                    panel.Controls.Add(titre);
                    panel.Controls.Add(ddl);
                    panel.Controls.Add(label); 
     
                    //puis on intègre le tout dans le MainPanel!!
                    MainPanel1.Controls.Add(panel);
                    MainPanel1.Controls.Add(new LiteralControl("<br/>"));
                }
            }
     
            protected void OnSelectedIndexChanged(object sender, EventArgs e)
            {
                //quel dropdownlist a émis l'evnmt??
                DropDownList ddl = (DropDownList)sender;
                string currentID = ddl.ID; 
                //isoler le (k) !! 
                string s1 = currentID.Substring(3);
                int k = Convert.ToInt32(s1); 
     
                //pointer le "bon" panel!!
                Panel panel1 = (Panel)MainPanel1.FindControl("Panel" + s1);
                if (panel1 != null)
                {
                    //récupérer le control
                    Label label = (Label)panel1.FindControl("Label" + s1);
                    if (label != null)
                    {
                        label.Text = "Et le gagnant est : " + ddl.SelectedValue;
                    }
                }
            }
        }
    Bon, je ne m��tends pas sur le pourquoi de certains choix, google, mais au final, chaque panel enfant me donne l'illusion d'une ligne de table... En stylisant cela avec du CSS on peut avoir un formatage correct.
    Je r�cup�re en fait de la base de donn�es � travers ma Factory le 'nbrpanels' et chaque objet selon son type m'oriente vers la bonne source de donn�es � charger ; mais pour le test j'ai simplifi� avec des listes fixes...
    Le point important est la manipulation en "aveugle" des Controls ins�r�s � la vol�e !!
    Voil�, si �a peut int�resser quelqu'un d'autre !!
    nachtigal !!

  6. #6
    Membre �prouv�
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    133
    D�tails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyr�n�es)

    Informations forums :
    Inscription : Juin 2009
    Messages : 133
    Par d�faut
    Finalement j'ai trouv� la r�ponse au probl�me initialement pos�, en changeant l�g�rement la d�finition : Au lieu d'un GridView, il fallait plut�t g�n�rer des HtmlTableRow qu'on ajoute dynamiquement � un Table qui lui est fixe au lieu du panel...
    la solution se trouve �voqu� sur ce lien
    Avec cela j'ai toutes les possibilit�s de g�n�ration dynamique de code.
    nachtigal!!

+ R�pondre � la discussion
Cette discussion est r�solue.

Discussions similaires

  1. R�ponses: 1
    Dernier message: 19/08/2011, 16h41
  2. [ASP.net][GridView] Probleme sur un update
    Par jeromechezgdf dans le forum ASP.NET
    R�ponses: 6
    Dernier message: 31/05/2007, 17h23
  3. R�ponses: 1
    Dernier message: 23/04/2007, 15h07
  4. [C# et Asp.net] Lier 2 dropdownlist
    Par misscricri dans le forum ASP.NET
    R�ponses: 2
    Dernier message: 26/02/2007, 14h08
  5. [ASP.Net/GridView] Comment effectuer une jointure ?
    Par nikalkal dans le forum Acc�s aux donn�es
    R�ponses: 3
    Dernier message: 20/07/2006, 09h05

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