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 :

OnItemCommand ne recupère pas de valeur


Sujet :

ASP.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Analyste Programmeur
    Inscrit en
    Juin 2007
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Analyste Programmeur

    Informations forums :
    Inscription : Juin 2007
    Messages : 38
    Par défaut OnItemCommand ne recupère pas de valeur
    Bonjour,

    J'utilise un gridview dans un repeater.

    Dans ce gridview, j'ai également une dropdownlist.


    Je voudrais que ma DDL contienne 3 items (fait/en cours/a faire), et que par défaut, il mette la valeur que je trouve dans ma requete sql qui rempli le gridview.

    Par la suite, lorsque l'on change d'index, il faudrait enregistrer le changement dans ma bdd également, et pour cela je pensais utiliser un itemcommand


    Le probleme : non seulement ma ddl ne prend pas la valeur de ma requete sql, et en plus de cela, l'itemcommand n'est pas appelé, sauf si je met un bouton à chacune des lignes (ce qui va rendre l'utilisation très contraignante...). Et lorsqu'il est appelé, le FindControl ne marche pas (impossible de récupérer ma DDL)


    voici le code aspx :

    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
    <asp:Repeater ID="RepeatFond" DataSourceID="sqlRepeater" runat="server" OnItemDataBound="RepeatFond_ItemDataBound" OnItemCommand="ddl_change">
            <ItemTemplate>
                <b>Fondamental : <%# Eval("libelle_fondamentaux")%></b><br />
                <asp:GridView ID="GridViewFond" runat="server" AutoGenerateColumns="false"  BackColor="White" BorderColor="#DEDFDE" BorderStyle="None" BorderWidth="1px" CellPadding="4" ForeColor="#5C5C5C" GridLines="Vertical" style="text-align:center">
                    <RowStyle BackColor="#F7F7DE" />
                    <Columns>
                        <asp:BoundField DataField="fondamentaux" HeaderText="Action" HeaderStyle-Width="700" />
                        <asp:BoundField DataField="idvalidation" HeaderText="Qui" />
                        <asp:TemplateField HeaderText="Avancement">
                            <ItemTemplate>
                                <asp:DropDownList ID="ddl_avancement" AutoPostBack="true" runat="server" DataTextField="fondamentaux" DataValueField="id_fondamentaux">
                                    <asp:ListItem>Fait</asp:ListItem>
                                    <asp:ListItem>En cours</asp:ListItem>
                                    <asp:ListItem>A faire</asp:ListItem>
                                </asp:DropDownList>
                                <asp:Button CommandArgument='<%# DataBinder.Eval(Container.DataItem, "id_fondamentaux") %>' ID="Button1" runat="server" />
                            </ItemTemplate>
                        </asp:TemplateField>
                    </Columns>
                </asp:GridView>
                <br />
            </ItemTemplate>
        </asp:Repeater>
        <asp:sqldatasource id="sqlRepeater" runat="server" />

    puis le code cs :

    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
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                repeaterBind();
            }
        }
     
        private void repeaterBind()
        {
            sqlRepeater.ConnectionString = ConfigurationManager.ConnectionStrings["sqlServer"].ConnectionString;
            string req = "Select [libelle_fondamentaux] as libelle_fondamentaux, [id_categorie_fondamentaux] as id_categorie_fondamentaux from [BSC_Categorie_Fondamentaux] Order By [id_categorie_fondamentaux]";
            sqlRepeater.SelectCommand = req;
            RepeatFond.DataSource = null;
            RepeatFond.DataBind(); 
        }
     
        public void RepeatFond_ItemDataBound(object Sender, RepeaterItemEventArgs e)
        {
            string toto = "";
            // Si il s'agit d'un élément Item ou AlternatingItem.
            if ((e.Item.ItemType == ListItemType.Item) | (e.Item.ItemType == ListItemType.AlternatingItem))
            {
                DropDownList ddl = (DropDownList)e.Item.FindControl("ddl_avancement");
     
                // Tu récupère la valeur sélectionnée (le texte ou la valeur associée)
                //    ddl.SelectedItem.Text
                // ou ddl.SelectedItem.Value
                if (ddl != null && ddl.SelectedItem != null)
                    toto = ddl.SelectedItem.Value;
     
                // Récupération id de la categ.
                int idFond = int.Parse(((DataRowView)e.Item.DataItem)["id_categorie_fondamentaux"].ToString());
                // Stock le GridView1 dans une variable
                GridView myGridView = (GridView)e.Item.FindControl("GridViewFond");
                // Construction du GridView
                myGridView.DataSource = dsListeFondamentaux(idFond);            
                myGridView.DataBind();
            }
        }
     
        private DataSet dsListeFondamentaux(int idFond)
        {
    	    // Création d'une instance de connexion
            SqlConnection oConnexion = new SqlConnection();
            oConnexion.ConnectionString = ConfigurationManager.ConnectionStrings["sqlServer"].ConnectionString;
     
            // Création d'un DataSet
    	    DataSet myDataset = new DataSet();
            SqlDataAdapter dtr = new SqlDataAdapter("Select [BSC_Fondamentaux].[id_fondamentaux] as id_fondamentaux, [BSC_Fondamentaux].[libelle_fondamentaux] as fondamentaux, [BSC_Type_Validation].[libelle_validation] as validation, [BSC_Type_Validation].[id_type_validation] as idvalidation from [BSC_Fondamentaux], [BSC_Etat_Fondamentaux], [BSC_Type_Validation], [BSC_Categorie_Fondamentaux] Where [BSC_Etat_Fondamentaux].[id_type_validation]=[BSC_Type_Validation].[id_type_validation] And [BSC_Etat_Fondamentaux].[id_fondamentaux]=[BSC_Fondamentaux].[id_fondamentaux] And [BSC_Fondamentaux].[id_categorie_fondamentaux]=[BSC_Categorie_Fondamentaux].[id_categorie_fondamentaux] And [BSC_Categorie_Fondamentaux].[id_categorie_fondamentaux] = '" + idFond + "' Order By [BSC_Fondamentaux].[id_fondamentaux]", oConnexion);
     
            dtr.Fill(myDataset);
            // Retourne le DataSet
    	    return myDataset;
        }
     
       public void ddl_change(object source, RepeaterCommandEventArgs e)
        {
            string status;
            if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
            {
                DropDownList ddl = (DropDownList)e.Item.FindControl("ddl_avancement");
     
                // Tu récupère la valeur sélectionnée (le texte ou la valeur associée)
                if (ddl != null && ddl.SelectedItem != null)
                    status = ddl.SelectedItem.Text;
                // Faire des traitements avec la variable récupérée
            }
            foreach (RepeaterItem Item in RepeatFond.Items)
            {
     
                if (((DropDownList)Item.FindControl("ddl_avancement")).Text != "")
                {
                    // traitement
                }
            }
        }


    Si quelqu'un a une idée, je suis preneur !

  2. #2
    Expert confirmé
    Avatar de Immobilis
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2004
    Messages
    6 559
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 559
    Par défaut
    Salut,
    Citation Envoyé par Kurapika-shinji Voir le message
    sauf si je met un bouton à chacune des lignes
    Seulement, c'est le fonctionnement de base de ces contrôles.

    A+
    "Winter is coming" (ma nouvelle page d'accueil)

Discussions similaires

  1. erreur '' n'est pas une valeur entière correcte
    Par ffxlenoir dans le forum Langage
    Réponses: 5
    Dernier message: 02/12/2005, 13h57
  2. Réponses: 5
    Dernier message: 12/09/2005, 17h34
  3. [Struts]Recupération de la valeur d un param....
    Par Oby dans le forum Struts 1
    Réponses: 2
    Dernier message: 11/02/2005, 11h56
  4. [Pb : champ Text = pas de valeur par defaut ?]
    Par mat_dum dans le forum SQL Procédural
    Réponses: 4
    Dernier message: 18/08/2003, 12h57
  5. Réponses: 2
    Dernier message: 22/07/2002, 18h02

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