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 :

probleme avec une liste de type DropDownList mise a l interieur d'un ItemTemplate


Sujet :

ASP.NET

  1. #1
    Membre éclairé Avatar de solawe
    Inscrit en
    Juillet 2006
    Messages
    368
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Juillet 2006
    Messages : 368
    Par défaut probleme avec une liste de type DropDownList mise a l interieur d'un ItemTemplate
    bonjour,
    J'ai besoin d'afficher une liste de type DropDownList à l'interiuer d'un DataGrid:

    comme suit:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <asp:TemplateColumn HeaderText="pays">
                <ItemTemplate>
     
    		<asp:DropDownList id="listpays"     DataValueField="paysId" DataTextField = "paysNom" runat="server" 
                   AppendDataBoundItems="true">
                 <asp:ListItem Value="">--Choisissez un pays--</asp:ListItem>
                 </asp:DropDownList>
     
                 </ItemTemplate>
                 </asp:TemplateColumn>
    le probleme c'est que je peux pas réféencer ma liste par son id dans mon code behind pour 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
     
     public void Load_liste_pays( ) {
     
            ArrayList listPays = new ArrayList();
     
            for (int i = 0; i < findListPays.TListPays.Length; i++)
            {
                tPays = findListPays.TListPays[i];
                listPays.Add(tPays);
            }
            listpays.DataSource = listPays; 
            listpays.DataBind(); 
        }
    j'obtient l'erreur suivante:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    The name 'listpays' does not exist in the current context
    quelqu'un sait comment faire pour referencer listpays?

    merci

  2. #2
    Membre Expert Avatar de guitoux1
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    1 011
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Juin 2006
    Messages : 1 011
    Par défaut
    Il te faut alimenter la DDL dans l'évenent OnItemDataBound de ta GridView

  3. #3
    Membre éclairé Avatar de solawe
    Inscrit en
    Juillet 2006
    Messages
    368
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Juillet 2006
    Messages : 368
    Par défaut
    J'ai pas tres bien compris ta reponse,tu peux me donner plus de clarification stp?

  4. #4
    Membre Expert Avatar de guitoux1
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    1 011
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Juin 2006
    Messages : 1 011
    Par défaut
    Ta GridView possède uin evenement OnItemDataBound (je crois que c'est le nom exact).
    Tu met le code qui alimente ta DropDownList dedans, ce qui donnes (en gros et de mémoire) :
    Code C# : 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
     
    protected void daraGrid1_ItemDataBound(object sender, DataBoundItemEventArgs e)
    {
       DropDownList ddl = (DropDownList)e.Item.FindControl("dropDownList1");
       ddl.DataSource = GetArrayList();
       ddl.DataBind();
    }
     
    private ArrayList GetArrayList()
    {
       ArrayList listPays = new ArrayList();
       for (int i = 0; i < findListPays.TListPays.Length; i++)
       {
          tPays = findListPays.TListPays[i];
          listPays.Add(tPays);
       }
       return listPays;
    }

    EDIT : Le nom de la méthode et celui de l'EventArgs sont surement faux, mais tu retrouveras les bons avec l'IntelliSense.
    Le nom des contrôles est à adapter à ton cas.

  5. #5
    Membre éclairé Avatar de solawe
    Inscrit en
    Juillet 2006
    Messages
    368
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Juillet 2006
    Messages : 368
    Par défaut
    merci pour ta reponse,

    j'ai compris,mais je sais pas ou est ce que je vais referencer la methode daraGrid1_ItemDataBound?

  6. #6
    Membre Expert Avatar de guitoux1
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    1 011
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Juin 2006
    Messages : 1 011
    Par défaut
    Il te suffit de la référencer dans la propriété OnItemDataBound de ta datagrid (dans le mode design, c'est encore plus simple, tu double-clic sur l'évènement OnItemDataBound)

  7. #7
    Membre éclairé Avatar de solawe
    Inscrit en
    Juillet 2006
    Messages
    368
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Juillet 2006
    Messages : 368
    Par défaut
    oui je l ai trouvé !
    je vais le tester et je te reponds

    mirci ;-)

  8. #8
    Membre éclairé Avatar de solawe
    Inscrit en
    Juillet 2006
    Messages
    368
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Juillet 2006
    Messages : 368
    Par défaut
    :-( j'obtient une erreur : le type DataBoundItemEventArgs n'existe pas

  9. #9
    Membre Expert Avatar de guitoux1
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    1 011
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Juin 2006
    Messages : 1 011
    Par défaut
    C'est ce que je te disais, j'étais pas sur du nom. Mais normalement, Visual Studio t'as automatiquement créé la méthode dataGrid1.ItemDataBound() avec les bons paramètres !!

  10. #10
    Membre Expert Avatar de guitoux1
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    1 011
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Juin 2006
    Messages : 1 011
    Par défaut
    La syntaxe exact de la méthode est :
    Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    protected void datagrid1_ItemDataBound(object sender, DataGridItemEventArgs e)
    {
     
    }
    et dans le ASPX :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <asp:DataGrid ID="datagrid1" runat="server" OnItemDataBound="datagrid1_ItemDataBound"></asp:DataGrid>

  11. #11
    Membre éclairé Avatar de solawe
    Inscrit en
    Juillet 2006
    Messages
    368
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Juillet 2006
    Messages : 368
    Par défaut
    oui merci ce sont bien les bons arguments

  12. #12
    Membre éclairé Avatar de solawe
    Inscrit en
    Juillet 2006
    Messages
    368
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Juillet 2006
    Messages : 368
    Par défaut
    J'arrive pas a récupérer listpays

    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
    protected void dataGrid_ItemDataBound(object sender, DataGridItemEventArgs e)
        {
            DropDownList listpays = (DropDownList)e.Item.FindControl("listpays");
     
            PaysProxy.PaysService paysService = new PaysProxy.PaysService();
            PaysProxy.ListPaysType findListPays = paysService.GetAllFromPays();
            PaysProxy.PaysType tPays = new PaysProxy.PaysType();
            ArrayList listPays = new ArrayList();
           // label.Text ="******************"+ listpays.Equals(null);
            for (int i = 0; i < findListPays.TListPays.Length; i++)
            {
                tPays = findListPays.TListPays[i];
                listPays.Add(tPays);
            }
     
           listpays.DataSource = listPays;
           listpays.DataBind(); 
     
        }
    j'obtient l'erreur suivante:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Object reference not set to an instance of an object.

  13. #13
    Membre Expert Avatar de guitoux1
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    1 011
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Juin 2006
    Messages : 1 011
    Par défaut
    Une de tes variables pointe vers une valeur null.
    Pour savoir laquelle, passes en mode debug

  14. #14
    Membre éclairé Avatar de solawe
    Inscrit en
    Juillet 2006
    Messages
    368
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Juillet 2006
    Messages : 368
    Par défaut
    oui je l 'ai fait ,en mode debug il s arrete sur la ligne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     listpays.DataSource = listPays;
    c'est listpays que je recupere par:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    DropDownList listpays =(DropDownList)e.Item.FindControl("listpays");
    qui est null

  15. #15
    Membre Expert Avatar de guitoux1
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    1 011
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Juin 2006
    Messages : 1 011
    Par défaut
    Ah oui je sais pardon. C'est qu'en ASP.Net 2.0 ca à évolué. Il faut faire :

    Code C# : 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
    protected void datagrid1_ItemDataBound(object sender, DataGridItemEventArgs e)
    {
       if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
       {
          DropDownList listpays = (DropDownList)e.Item.FindControl("listpays");
     
          PaysProxy.PaysService paysService = new PaysProxy.PaysService();
          PaysProxy.ListPaysType findListPays = paysService.GetAllFromPays();
          PaysProxy.PaysType tPays = new PaysProxy.PaysType();
          ArrayList listPays = new ArrayList();
          / label.Text ="******************"+ listpays.Equals(null);
          for (int i = 0; i < findListPays.TListPays.Length; i++)
          {
              tPays = findListPays.TListPays[i];
              listPays.Add(tPays);
          }
     
          listpays.DataSource = listPays;
          listpays.DataBind(); 
       }
    }

  16. #16
    Membre éclairé Avatar de solawe
    Inscrit en
    Juillet 2006
    Messages
    368
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Juillet 2006
    Messages : 368
    Par défaut
    wéééééééééééé ça marche !!!

    merci bcp pour ton aide

  17. #17
    Membre Expert Avatar de guitoux1
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    1 011
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Juin 2006
    Messages : 1 011
    Par défaut
    de rien
    Penses au TAG STP

  18. #18
    Membre éclairé Avatar de solawe
    Inscrit en
    Juillet 2006
    Messages
    368
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Juillet 2006
    Messages : 368
    Par défaut
    ok biensure,j'ai juste un petit soucis:

    la liste s affiche pour toutes les lignes sauf la deuxieme

  19. #19
    Membre Expert Avatar de guitoux1
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    1 011
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Juin 2006
    Messages : 1 011
    Par défaut
    Citation Envoyé par solawe
    ok biensure,j'ai juste un petit soucis:

    la liste s affiche pour toutes les lignes sauf la deuxieme
    ?? Comment ça ?
    Peux tu me montrer le code complet de ta datagrid et de ta méthode ItemDataBound STP ?

  20. #20
    Membre éclairé Avatar de solawe
    Inscrit en
    Juillet 2006
    Messages
    368
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Juillet 2006
    Messages : 368
    Par défaut
    Je veux dire que la liste est pleine dans toutes les lignes,sauf pour la deuxieme ligne elle apparait vide
    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
     
     
    <asp:DataGrid ID="datagrid" runat="server" BackColor="Transparent" CellPadding="4" BorderColor="Lavender" 
         AutoGenerateColumns="false"
         OnEditCommand="Edit"
         OnUpdateCommand="Update"
         OnCancelCommand="Cancel"
         OnDeleteCommand="Delete"  Width="355px"   DataKeyField="villeId" SelectedIndex="1" OnItemDataBound="dataGrid_ItemDataBound">
     
        <HeaderStyle BackColor="MediumBlue" ForeColor="White"> 
     
        </HeaderStyle>
            <Columns>
            <asp:TemplateColumn>
     
                <ItemTemplate>
     
             <asp:Label ID="villeId"  Enabled="false"  Visible="false"  runat="server" Text='<%#Eval("villeId") %>'></asp:Label>
                 </ItemTemplate>
            </asp:TemplateColumn>
     
     
     
     
          <asp:TemplateColumn >
                <ItemTemplate>
             <asp:Label ID="villeNom"  Enabled="false"  Visible="true"  runat="server" Text='<%#Eval("villeNom") %>'></asp:Label>
             </ItemTemplate>
                <EditItemTemplate> <asp:TextBox ID="villeNomTb"  Enabled="true"  Visible="true"  runat="server" Text='<%#Eval("villeNom") %>'></asp:TextBox></EditItemTemplate>
     
            </asp:TemplateColumn>
     
           <asp:TemplateColumn>
                <ItemTemplate>
             <asp:Label ID="paysId"  Enabled="false"  Visible="false"  runat="server" Text='<%#Eval("pays.paysId") %>'></asp:Label>
                </ItemTemplate>
            </asp:TemplateColumn>
     
     
            <asp:TemplateColumn HeaderText="pays">
                <ItemTemplate>
                      <asp:Label ID="paysNom" Enabled="true"   runat="server" Text='<%#Eval("pays.paysNom") %>'></asp:Label>
                </ItemTemplate>
           </asp:TemplateColumn> 
     
           <asp:EditCommandColumn  CancelText="Cancel" EditText="Edit" UpdateText="Update"></asp:EditCommandColumn>
           <asp:TemplateColumn>
    									<ItemTemplate>
     
    										<asp:ImageButton id="Imagedelete" runat="server" CommandName="Delete" ImageUrl="../image/delete.jpg" > </asp:ImageButton>
    									</ItemTemplate>
    		</asp:TemplateColumn>
     
     
    		<asp:TemplateColumn HeaderText="pays">
                <ItemTemplate>
     
     
    		 <asp:DropDownList id="listpays2"     DataValueField="paysId" DataTextField = "paysNom" runat="server" 
                   AppendDataBoundItems="true">
                 <asp:ListItem Value="">--Choisissez un pays--</asp:ListItem>
            </asp:DropDownList>
                 </ItemTemplate>
                 </asp:TemplateColumn>
            </Columns>
     
     
        </asp:DataGrid>

    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 dataGrid_ItemDataBound(object sender, DataGridItemEventArgs e)
        {
            if (e.Item.ItemType == ListItemType.Item|| e.Item.ItemType == ListItemType.AlternatingItem)
            {
                DropDownList listpays = (DropDownList)e.Item.Cells[6].FindControl("listpays2");
     
                PaysProxy.PaysService paysService = new PaysProxy.PaysService();
                PaysProxy.ListPaysType findListPays = paysService.GetAllFromPays();
                PaysProxy.PaysType tPays = new PaysProxy.PaysType();
                ArrayList listPays = new ArrayList();
                label.Text = "******************" + e.Item.ItemIndex;
     
                for (int i = 0; i < findListPays.TListPays.Length; i++)
                {
                    tPays = findListPays.TListPays[i];
                    listPays.Add(tPays);
                }
     
                listpays.DataSource = listPays;
                listpays.DataBind(); 
            } 
        }

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Probleme avec une liste excel
    Par casavba dans le forum Excel
    Réponses: 3
    Dernier message: 14/09/2007, 10h23
  2. Probleme avec une liste
    Par Papri dans le forum ANT
    Réponses: 3
    Dernier message: 14/02/2007, 15h18
  3. Probleme avec une liste chainée
    Par apen2k2 dans le forum C
    Réponses: 7
    Dernier message: 14/12/2006, 16h31
  4. petit probleme avec une liste chainée
    Par kamouminator dans le forum C
    Réponses: 26
    Dernier message: 06/11/2006, 20h18
  5. [MySQL] Problème avec une liste déroulante
    Par leloup84 dans le forum SQL Procédural
    Réponses: 19
    Dernier message: 24/01/2006, 12h57

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