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 :

Comment customiser un GridView ?


Sujet :

ASP.NET

  1. #1
    Membre éclairé Avatar de blasil64
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Octobre 2008
    Messages
    324
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2008
    Messages : 324
    Par défaut Comment customiser un GridView ?
    Bonsoir à tous,
    J'ai mon GridView pour gérer les avis mis par les utilisateurs sur les films dans ma partie administration. Au niveau de l'affichage du GridView, je souhaite le personnaliser afin d'afficher le titre des films et le pseudo des utilisateurs au lieu d'avoir leur propre ID tant qu'à faire !

    Pour cela, j'ai utilisé l'événement OnRowDataBound du GridView et j'affiche les informations que je désire comme cela :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     protected void GridViewAvis_RowDataBound(object sender, GridViewRowEventArgs e)
            {
                // Mes deux requêtes qui permettent de récupérer  le titre du film et le pseudo de l'utilisateur
                if (e.Row.RowType != DataControlRowType.Header && e.Row.RowType != DataControlRowType.Footer)
                {
                    if (e.Row.RowState == DataControlRowState.Normal || e.Row.RowState == DataControlRowState.Alternate)
                    {
                        e.Row.Cells[2].Text = Mon.Pseudo;
                        e.Row.Cells[3].Text = Mon.Titre;
                    }
    }
    Cela fonctionne correctement. Mais si je veux éditer, je retrouve deux TextBox avec les Id correspondant au titre du film et au pseudo de l'utilisateur. Je cherche donc à y mettre des DropDownList afin de pouvoir changer le titre du film ou le pseudo de l'utilisateur par exemple ce que j'ai réussi à faire par :
    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
     
                    else if (e.Row.RowState == DataControlRowState.Edit){
     
                        // DDL utilisateur
                        DropDownList DDLUtilisateur = new DropDownList();
                        foreach (Utilisateur user in ListeUtilisateurs)
                        {
                            DDLUtilisateur.Items.Add(user.Pseudo);
                        }
                        e.Row.Cells[2].Controls.Add(DDLUtilisateur);
     
                        // DDL Movies
                        DropDownList DDLFilms = new DropDownList();
                        foreach (Films film in ListeFilms)
                        {
                            DDLFilms.Items.Add(film.Titre);
                        }
                        e.Row.Cells[3].Controls.Add(DDLFilms);
                    }
                }
    Je créé donc dynamiquement les contrôles, mais j'ai encore les TextBox et si je change la valeur de la DropDownList et que je valide l'édition, cela ne fonctionne pas bien évidemment.
    D'où trois questions :
    - Comment virer ce TextBox et le remplacer par ma DropDownList ?
    - La DropDownList peut-elle se placer directement sur le bon film ou le bon pseudo ? Si oui, comment ?
    - Une fois remplacé, comment faire fonctionner le remplacement si je choisis un autre utilisateur ou un autre titre de film ?

    Merci d'avance pour vos réponses !

  2. #2
    Rédacteur
    Avatar de lutecefalco
    Profil pro
    zadzdzddzdzd
    Inscrit en
    Juillet 2005
    Messages
    5 052
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : zadzdzddzdzd

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 052
    Par défaut
    Passe par un EditItemTemplate

  3. #3
    Membre éclairé Avatar de blasil64
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Octobre 2008
    Messages
    324
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2008
    Messages : 324
    Par défaut
    Tout d'abord merci pour ta réponse.
    J'ai quand même un soucis. J'aurais aimé utilisé le "EditItemTemplate". Mon soucis, c'est que je ne peux l'intégrer à l'endroit où je veux :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <asp:BoundField DataField="IdUtilisateur" HeaderText="Pseudo de l'utilisateur" SortExpression="IdUtilisateur">
     
                </asp:BoundField>
    Lorsque je me positionne dans cette balise, j'ai seulement "ControlStyle", "FooterStyle", "HeaderStyle" et "ItemStyle". Si je me met en dehors de la balise "BoundField", je peux faire le "EditItemTemplate".
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <asp:TemplateField>
                    <EditItemTemplate>
     
                    </EditItemTemplate>
                </asp:TemplateField>
    Mais dois-je tout reconfigurer ?
    Comment faire ?

    Merci d'avance pour vos réponses !

  4. #4
    Rédacteur
    Avatar de lutecefalco
    Profil pro
    zadzdzddzdzd
    Inscrit en
    Juillet 2005
    Messages
    5 052
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : zadzdzddzdzd

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 052
    Par défaut
    Ne te positionne pas dans BoundField mais utilise TemplateField à la place

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <asp:TemplateField HeaderText="FirstName" SortExpression="FirstName"> 
    <EditItemTemplate> ### Tes controles en mode edition ###</EditItemTemplate> 
    <ItemTemplate> ### Tes controles en mode normal###</ItemTemplate>
     </asp:TemplateField>

  5. #5
    Membre éclairé Avatar de blasil64
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Octobre 2008
    Messages
    324
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2008
    Messages : 324
    Par défaut
    Bonsoir,
    Merci pour cette astuce. J'ai tenté le TemplateField avec l'itemTemplate. Ok j'arrive à récupérer les informations de ma base de données, donc je récupère l'id de l'utilisateur ou l'id du film sur lequel porte l'avis.
    Sur quel événement gérer l'affichage du titre du film au lieu de l'id ? Par quel moyen ?
    De plus, je n'ai plus les boutons de modification et de suppression comme avec le BoundField. Puis je le remettre ?

    Voici mon code pour le moment :
    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
    <asp:GridView ID="GridViewAvis" runat="server" 
            AutoGenerateColumns="False" DataKeyNames="Id_de_mon_avis" 
            DataSourceID="le_data_source"
            onrowdatabound="GridViewAvis_RowDataBound">
            <Columns>
            <asp:TemplateField HeaderText="Pseudo de l'utilisateur">
                <itemtemplate>
                  <asp:label id="LabelPseudoUtilisateur" Text='<%# Eval("Id_de_user") %>' runat="server"/> 
                </itemtemplate>
                <EditItemTemplate>
                    <input type="text" runat="server" />
                </EditItemTemplate>
            </asp:TemplateField>
            <asp:TemplateField HeaderText="Titre du film">
                <itemtemplate>
                  <asp:label id="LabeltitreFilm" runat="server" Text='<%# Eval("id_du_film") %>'/> 
                </itemtemplate>
            </asp:TemplateField>
            <asp:TemplateField HeaderText="Avis">
                <itemtemplate>
                  <asp:label id="LabelAvis" runat="server" Text='<%# Eval("Avis") %>'/> 
                </itemtemplate>
            </asp:TemplateField>
            <asp:TemplateField HeaderText="Note">
                <itemtemplate>
                  <asp:label id="LabelNote" runat="server" Text='<%# Eval("la_note") %>'/> 
                </itemtemplate>
            </asp:TemplateField>
            <asp:TemplateField HeaderText="Note">
                <itemtemplate>
                  <asp:CheckBox id="CheckBoxIsActive" runat="server" Checked='<%# Eval("est_actif_ou_pas") %>'/> 
                </itemtemplate>
            </asp:TemplateField>
            </Columns>
        </asp:GridView>
    Merci pour ton aide !

  6. #6
    Membre éclairé Avatar de blasil64
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Octobre 2008
    Messages
    324
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2008
    Messages : 324
    Par défaut
    Bon j'avance petit à petit !
    Mais il y a les fêtes de Bayonne aussi la nuit et le stage la journée !!

    Bon bref, au niveau des boutons pour éditer et supprimer, j'ai trouvé comme un grand en farfouillant.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <asp:TemplateField>
                <ItemTemplate>
                    <asp:linkbutton ID="Edit" Text="Editer" commandname="Edit" runat="server"/> 
                    <asp:LinkButton ID="Suppr" Text="Supprimer" CommandName="Delete" runat="server" />
                </ItemTemplate>
                <EditItemTemplate>
                    <asp:LinkButton ID="Update" Text="Mettre à jour" CommandName="Update" runat="server" />
                    <asp:LinkButton ID="Cancel" Text="Annuler" CommandName="Cancel" runat="server" />
                </EditItemTemplate>
            </asp:TemplateField>
    J'ai pu tester d'en supprimer un, et ça a fonctionné niquel.

    Mais je n'ai pas encore trouvé comment faire pour afficher les noms des utilisateurs et le film qui est noté.

    Merci pour l'aide.

  7. #7
    Membre éclairé Avatar de blasil64
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Octobre 2008
    Messages
    324
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2008
    Messages : 324
    Par défaut
    Bonjour,
    Etant toujours bloqué, je vasi essayer de détailler un peu plus.
    En effet, en passant par les templates, j'obtiens mon GridView. J'ai réussi à ajouter les boutons éditer et supprimer dans le mode normal de consultation du GridView et les boutons mettre à jour et annuler dans le mode édition.

    J'ai deux soucis :
    - Dans le mode normal, je voudrai afficher le pseudo de l'utilisateur et le titre du film correspondant à l'avis. Or pour le moment, je n'ai que les Ids.
    - Dans le mode édition, j'aimerai charger la liste de tous les films ainsi que de tous les utilisateurs dans les ListBox qui conviennent et que ces ListBox soient sur le bon item correspondant (si avant le mode édition, c'était pour le film 'Silent Hill', quand je veux éditer, ma ListBox est sur ce même film) ainsi que mes TextBox ou TextArea contienne les valeurs de la ligne que l'on veut éditer.


    Comment réaliser cela ? Au niveau du code design ? Quels événement utiliser ? J'aimerai bien avoir un exemple pour mieux comprendre.

    Merci d'avance pour vos réponses !

  8. #8
    Rédacteur
    Avatar de lutecefalco
    Profil pro
    zadzdzddzdzd
    Inscrit en
    Juillet 2005
    Messages
    5 052
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : zadzdzddzdzd

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 052
    Par défaut
    Citation Envoyé par blasil64 Voir le message
    Bonjour,
    Etant toujours bloqué, je vasi essayer de détailler un peu plus.
    En effet, en passant par les templates, j'obtiens mon GridView. J'ai réussi à ajouter les boutons éditer et supprimer dans le mode normal de consultation du GridView et les boutons mettre à jour et annuler dans le mode édition.

    J'ai deux soucis :
    - Dans le mode normal, je voudrai afficher le pseudo de l'utilisateur et le titre du film correspondant à l'avis. Or pour le moment, je n'ai que les Ids.
    - Dans le mode édition, j'aimerai charger la liste de tous les films ainsi que de tous les utilisateurs dans les ListBox qui conviennent et que ces ListBox soient sur le bon item correspondant (si avant le mode édition, c'était pour le film 'Silent Hill', quand je veux éditer, ma ListBox est sur ce même film) ainsi que mes TextBox ou TextArea contienne les valeurs de la ligne que l'on veut éditer.


    Comment réaliser cela ? Au niveau du code design ? Quels événement utiliser ? J'aimerai bien avoir un exemple pour mieux comprendre.

    Merci d'avance pour vos réponses !
    Bah bindes toi sur le pseudo et le titre plutôt que sur les Ids.
    Je vois pas vraiment où est la difficulté là

  9. #9
    Membre éclairé Avatar de blasil64
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Octobre 2008
    Messages
    324
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2008
    Messages : 324
    Par défaut
    Citation Envoyé par lutecefalco Voir le message
    Bah bindes toi sur le pseudo et le titre plutôt que sur les Ids.
    Je vois pas vraiment où est la difficulté là
    Merci pour ta réponse.
    Sauf que les Ids référencent les clés primaires des deux tables 'Utilisateurs' et 'Films'.
    J'ai ma table 'Avis' dont le GridView affiche les données de cette table. 'Id_User' et 'id_movies' sont deux clés étrangères à cette table 'avis' référençant les clés primaires 'id_user' de la table 'Utilisateur' et 'id_movies' de la table 'Films'.
    Du coup, je ne peux pas simplement binder sur le pseudo ou le titre du film ?

    Existe-t-il un moyen simple d'y arriver ?

    Merci d'avance pour vos réponses !

  10. #10
    Rédacteur
    Avatar de lutecefalco
    Profil pro
    zadzdzddzdzd
    Inscrit en
    Juillet 2005
    Messages
    5 052
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : zadzdzddzdzd

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 052
    Par défaut
    Bah tu fais en sorte que ta requête SQL retourne ces valeurs

  11. #11
    Membre éclairé Avatar de blasil64
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Octobre 2008
    Messages
    324
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2008
    Messages : 324
    Par défaut
    Je viens de trouver une des deux solutions, pour afficher le pseudo de l'utilisateur ainsi que le titre du film en mode normal. J'ai géré cela dans l'événement OnRowDataBound.

    Voici mon 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
     
    protected void GridViewAvis_RowDataBound(object sender, GridViewRowEventArgs e)
            {
                if (e.Row.RowType == DataControlRowType.DataRow)
                {
                    Label idFilm = new Label();
                    idFilm = (Label)e.Row.FindControl("LabeltitreFilm");
                    Label idUtilisateur = new Label();
                    idUtilisateur = (Label)e.Row.FindControl("LabelPseudoUtilisateur");
                    if (e.Row.RowType == DataControlRowType.DataRow)
                    {
                        if (e.Row.RowState == DataControlRowState.Normal || e.Row.RowState == DataControlRowState.Alternate)
                        {
                            //Récupération du titre du film
                            var titreFilms = from titre in MaTable
                                             where titre.IdFilm == Convert.ToInt32(idFilm.Text)
                                             select titre.Titre;
     
                            // Récupération du pseudo de l'utilisateur
                            var pseudoUtilisateur = from pseudo in MaTable
                                                    where pseudo.IdUtilisateur == Convert.ToInt32(idUtilisateur.Text)
                                                    select pseudo.Pseudo;
                            // Affichage des bons pseudo et bons titres de films
                            idFilm.Text = titreFilms.Single();
                            idUtilisateur.Text = pseudoUtilisateur.Single();
                        }
                    }
                }
          }
    Par contre, en mode édition, j'y suis presque, mais ça ne fonctionne pas. Au niveau du code behind, j'ai ceci toujours au niveau de l'événement OnRowDataBound :
    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
    else if (e.Row.RowState == DataControlRowState.Edit)
                        {
                            // Requête pour charger la liste des utilisateurs
                            var listUsers = from list in MaTable
                                            select list;
     
                            // Requête pour charger la liste des films
                            var listMovies = from list in MaTable
                                             select list;
                            // DDL utilisateur
                            DropDownList DDLUser = new DropDownList();
                            DDLUser = (DropDownList)e.Row.FindControl("DDLUtilisateur");
                            foreach (Utilisateur user in listUsers)
                            {
                                DDLUser.Items.Add(user.Pseudo);
                            }
                            // DDL Movies
                            DropDownList DDLFilm = new DropDownList();
                            DDLFilm = (DropDownList)e.Row.FindControl("DDLFilms");
                            foreach (Film film in listMovies)
                            {
                                DDLFilm.Items.Add(film.Titre);
                            }
                        }
    Et au niveau du design, j'ai bien mes deux DropDownList dans le mode 'EditTemplate' avec les boutons... :
    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
     
    <asp:TemplateField>
                <ItemTemplate>
                    <asp:linkbutton ID="Edit" Text="Editer" commandname="Edit" runat="server" /> 
                    <asp:LinkButton ID="Suppr" Text="Supprimer" CommandName="Delete" runat="server" />
                </ItemTemplate>
                <EditItemTemplate>
                    <asp:LinkButton ID="Update" Text="Mettre à jour" CommandName="Update" runat="server" />
                    <asp:LinkButton ID="Cancel" Text="Annuler" CommandName="Cancel" runat="server" />
                </EditItemTemplate>
            </asp:TemplateField>
            <asp:TemplateField HeaderText="Pseudo de l'utilisateur">
                <itemtemplate>
                  <asp:label id="LabelPseudoUtilisateur" Text='<%# Eval("IdUtilisateur") %>' runat="server"/> 
                </itemtemplate>
                <EditItemTemplate>
                    <asp:DropDownList runat="server" ID="DDLUtilisateur">
                    </asp:DropDownList>
                </EditItemTemplate>
            </asp:TemplateField>
            <asp:TemplateField HeaderText="Titre du film">
                <itemtemplate>
                  <asp:label id="LabeltitreFilm" runat="server" Text='<%# Eval("IdFilm") %>'/> 
                </itemtemplate>
                <EditItemTemplate>
                    <asp:DropDownList runat="server" ID="DDLFilms">
                    </asp:DropDownList>
                </EditItemTemplate>
            </asp:TemplateField>
    Mais cette édition ne fonctionne pas. Aussi, lorsque je clique sur le bouton 'Editer' d'un avis, les DropDownList ne se binde pas sur le bon utilisateur ou film.

    Que me manque-t-il ?
    Merci d'ance pour votre aide !

  12. #12
    Rédacteur
    Avatar de lutecefalco
    Profil pro
    zadzdzddzdzd
    Inscrit en
    Juillet 2005
    Messages
    5 052
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : zadzdzddzdzd

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 052
    Par défaut
    Poir l'edition, faut pas le faire dans le OnRowDataBound, c'est trop tôt.
    Faut le faire dans l'événement associé au clic sur le link button Editer (me rappelle pas du nom)

  13. #13
    Membre éclairé Avatar de blasil64
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Octobre 2008
    Messages
    324
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2008
    Messages : 324
    Par défaut
    Bonsoir,
    Bon j'avance petit à petit. J'ai réussi à me mettre sur les bons items de ma liste déroulante lorsque je passe en mode édition. J'ai procédé comme ceci :
    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
     
    else if (e.Row.RowState == DataControlRowState.Edit)
                        {
                            // Requête pour charger la liste des utilisateurs
                            var listUsers = from list in MaTableUtilisateur
                                            select list;
     
                            // Requête pour charger la liste des films
                            var listMovies = from list in MaTableFilm
                                             select list;
                            // DDL utilisateur : 
                            DDLUser = (DropDownList)e.Row.FindControl("DDLUtilisateur"); // Je récupère le contrôle DropdDownList
                            foreach (TableUtilisateur user in listUsers)
                            {
                                DDLUser.Items.Add(user.Pseudo); // Je charge la liste des utilisateurs en y ajoutant les items
                            }
                            App_Data.Avi avis = (TableAvis)e.Row.DataItem;
                            DDLUser.SelectedIndex = Convert.ToInt32(avis.IdUtilisateur - 1); // Je me mets sur le bon item
     
                            // Je récupère le contrôle DropDownList de films
                            DDLFilm = (DropDownList)e.Row.FindControl("DDLFilms");
                            foreach (TableFilm film in listMovies)
                            {
                                DDLFilm.Items.Add(film.Titre); // J'ajoute les items dans la DropDownList des films
                            }
                            DDLFilm.SelectedIndex = Convert.ToInt32(avis.IdFilm - 1); // Je me place sur le bon item
                        }
    Le code design :
    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
     
    <asp:TemplateField HeaderText="Pseudo de l'utilisateur">
                <itemtemplate>
                  <asp:label id="LabelPseudoUtilisateur" Text='<%# Eval("IdUtilisateur") %>' runat="server"/> 
                </itemtemplate>
                <EditItemTemplate>
                    <asp:DropDownList runat="server" ID="DDLUtilisateur">
                    </asp:DropDownList>
                </EditItemTemplate>
            </asp:TemplateField>
            <asp:TemplateField HeaderText="Titre du film">
                <itemtemplate>
                  <asp:label id="LabeltitreFilm" runat="server" Text='<%# Eval("IdFilm") %>'/> 
                </itemtemplate>
                <EditItemTemplate>
                    <asp:DropDownList runat="server" ID="DDLFilms">
                    </asp:DropDownList>
                </EditItemTemplate>
            </asp:TemplateField>
    Plus qu'une chose maintenant, l'update fonctionnel. Je me suis placé dans l'événement RowUpdating de mon GridView, j'ai tenté cela sans trop de succès encore :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    // Je récupère l'id de la ligne actuelle en édition
    int index = GridViewAvis.EditIndex;
                GridViewRow row = GridViewAvis.Rows[index];
    DropDownList DDLuser = (DropDownList)row.FindControl("DDLUtilisateur");
                DropDownList DDLmovies = (DropDownList)row.FindControl("DDLFilms");
                e.NewValues["IdUtilisateur"] = DDLuser.SelectedItem;
                e.NewValues["IdFilm"] = DDLmovies.SelectedItem;

    Je n'ai pas tout tenté encore, mais si vous avez quelques pistes ou solution, je suis preneur !

    Merci d'avance pour votre aide.

  14. #14
    Membre éclairé Avatar de blasil64
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Octobre 2008
    Messages
    324
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2008
    Messages : 324
    Par défaut
    Bonsoir,
    Un moment d'inattention et me voilà à écrire n'importe quoi !

    Ce n'est pas SelectedItem qu'il faut utiliser, mais SelectedValue !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    DropDownList DDLuser = (DropDownList)row.FindControl("DDLUtilisateur");
                DropDownList DDLmovies = (DropDownList)row.FindControl("DDLFilms");
                e.NewValues["IdUtilisateur"] = DDLuser.SelectedValue;
                e.NewValues["IdFilm"] = DDLmovies.SelectedValue;
    Merci lutecefalco et moi même !

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 26/07/2006, 10h18
  2. [C#] Comment exporter un GridView vers Excel ?
    Par anto dans le forum ASP.NET
    Réponses: 4
    Dernier message: 26/05/2006, 16h24
  3. Réponses: 4
    Dernier message: 17/05/2006, 15h11
  4. [C#] Comment gérer un GridView sur plusieurs pages ?
    Par transistor49 dans le forum ASP.NET
    Réponses: 3
    Dernier message: 26/04/2006, 15h56
  5. [C#] Comment trier un GridView ?
    Par Allen dans le forum ASP.NET
    Réponses: 4
    Dernier message: 26/04/2006, 15h50

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