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 :

[GridView] ComboBox en mode Edition


Sujet :

ASP.NET

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    198
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 198
    Points : 106
    Points
    106
    Par défaut [GridView] ComboBox en mode Edition
    Bonjour,

    Comme dis dans le titre, je voudrais lors de l'édition qu'un de mes champs se transforme en ComboBox pour restreindre l'utilisateur à choisir une valeur qui s'y trouve.

    J'ai fais pas mal de recherche pour pouvoir le faire avec ce composant ainsi que le aspxGridView (DevExpress). Mais c'est plutôt un échec

    Comment pourrais-je faire ça ? Ainsi que de remplir ma comboBox bien sur.

    Jusqu'à présent, le mieux que j'ai fais c'est obtenir la combobox mais sans pouvoir la remplir.

    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
     <asp:GridView ID="gv_Groups" runat="server" AutoGenerateSelectButton="True" OnSelectedIndexChanged="OnRowSelectedChanged" OnSelectedIndexChanging="OnRowSelectedChanging" HorizontalAlign="Center" AutoGenerateColumns="False" Width="164px" CellPadding="4" ForeColor="#333333" GridLines="None" OnRowDeleting="OnGroupDeleting" OnRowEditing="onTest">
            <HeaderStyle BackColor="#507CD1" BorderStyle="Solid" HorizontalAlign="Center" Width="400px" Font-Bold="True" ForeColor="White" />
            <RowStyle BorderStyle="Solid" HorizontalAlign="Center" BackColor="#EFF3FB" />
            <Columns>
                <asp:CommandField ShowEditButton="True" />
                <asp:BoundField DataField="Groups" HeaderText="Groups"/>
                <asp:TemplateField HeaderText="test">
                    <EditItemTemplate>
                        <asp:DropDownList ID="dl_Prop" runat=server>
     
                        </asp:DropDownList>
                    </EditItemTemplate>
                </asp:TemplateField>
                <asp:CommandField ShowDeleteButton="True" />
            </Columns>
        </asp:GridView>

    Merci d'avance

  2. #2
    Futur Membre du Club
    Inscrit en
    Février 2009
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 9
    Points : 5
    Points
    5
    Par défaut
    Tu peux le faire de plusieurs facons. Tu peux le faire avec une datasource par exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <asp:DropDownList runat="server" ID="DropDownList" 
                            DataValueField="Code" 
                            DataTextField="Libelle"
                            SelectedValue='<%# Bind("Code")%>' 
                            DataSourceID="LinqDataSource" />
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <asp:LinqDataSource ID="LinqDataSource" runat="server"
        ContextTypeName="DAL.MonDataContext" TableName="MaTable"
        OrderBy="Libelle"
        EnableInsert="true" EnableUpdate="true" EnableDelete="true"
        />
    Voila, ici il s'agit d'une LinqDataSource, mais tu peux mettre un objectDatasource si tu veux.

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    198
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 198
    Points : 106
    Points
    106
    Par défaut
    Merci pour ta réponse devGA, j'y vois déjà plus clair.

    Ma source de donnée est en fait une liste de string ce qui fait que je ne peux pas la mettre en paramètre "DataSourceID". J'ai donc essayé de remplir un ObjectDataSource avec ma liste, mais je n'y suis pas arrivé et je pense qu'il doit y avoir plus simple.

    Au passage, ma liste de string faisant partie du Business, je dois pouvoir remplir ma liste en code behind.

  4. #4
    Futur Membre du Club
    Inscrit en
    Février 2009
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 9
    Points : 5
    Points
    5
    Par défaut
    Tu peux aussi remplir ta ddl à la création de ta ligne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    protected override void GridView_RowCreated()
    {
        if (e.Row.RowType == DataControlRowType.DataRow)
        {
            DropDownList ddl = GridView.FindControl("DropDownList") as DropDownList; 
           ddl.DataSource = taListe;
     
        }
    }

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    198
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 198
    Points : 106
    Points
    106
    Par défaut
    J'ai essayé et ddl vaut toujours null. Est ce parce que je l'ai déclarer dans le fichier aspx ?

    Le nom est bien correcte et je ne retrouve pas le controle quand je regarde à gridView.Controls.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" Width="440px" OnRowEditing="GridView1_RowEditing" OnRowUpdating="GridView1_RowUpdating" OnRowCreated="GridView1_RowCreated">
                <Columns>
                    <asp:CommandField ShowEditButton="True" />
                    <asp:TemplateField HeaderText="Combo">
                        <EditItemTemplate>
                            <asp:DropDownList runat="server" ID="DropDownList" 
                            />
                        </EditItemTemplate>
                    </asp:TemplateField>
                    <asp:BoundField DataField="Number" HeaderText="Number" />
                    <asp:BoundField DataField="Color" HeaderText="Color" />
                </Columns>
            </asp:GridView>

  6. #6
    Futur Membre du Club
    Inscrit en
    Février 2009
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 9
    Points : 5
    Points
    5
    Par défaut
    Hummm, oui, je me suis planté, ca marche pas avec un GridView (le code est tiré d'un FormView)

    Regarde si tu peux pas trouver la ddl dans le e.Row ou le e.Row.Cells[0]

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    198
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 198
    Points : 106
    Points
    106
    Par défaut
    Un grand merci à toi, cela fonctionne comme sur des roulettes


    Et pour infos les deux fonctionnent :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
                     DropDownList ddl;
                    ddl = e.Row.FindControl("DropDownList") as DropDownList;
                    ddl = e.Row.Cells[0].FindControl("DropDownList") as DropDownList;

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

Discussions similaires

  1. [C#] Accéder au contenu d'un textbox dans un Gridview en mode edit.
    Par slideveloppeur2006 dans le forum Framework .NET
    Réponses: 2
    Dernier message: 23/04/2008, 11h19
  2. code pour rendre une ligne du gridview en mode edit
    Par mapmip dans le forum ASP.NET
    Réponses: 1
    Dernier message: 08/04/2008, 13h31
  3. Réponses: 2
    Dernier message: 20/01/2008, 15h04
  4. [C# 2.0] GridVIew en mode edition
    Par goodfaith dans le forum ASP.NET
    Réponses: 3
    Dernier message: 11/10/2007, 10h49
  5. Réponses: 15
    Dernier message: 31/07/2007, 17h32

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