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 :

Mise à jour d'un tableau gridview en fonction d'un choix dans une liste déroulante


Sujet :

ASP.NET

  1. #1
    Membre actif
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    526
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 526
    Points : 224
    Points
    224
    Par défaut Mise à jour d'un tableau gridview en fonction d'un choix dans une liste déroulante
    Bonjour,

    J'ai une base de données contenant 3 choix : Code,libellé et Type.
    J'ai une liste déroulante dont les items sont les éléments de la base dont le type est 0.

    J'ai également un tableau de 2 colonnes (Code et libellé) dont les lignes sont les éléments de la base dont le type est 2.

    Ce que je voudrais, c'est sélectionner un choix dans la liste déroulante et à l'aide d'un bouton Ajouter, que cela m'ajoute ce choix dans mon tableau et le retire de ma liste.

    J'ai essayé de cette manière mais j'ai rencontré deux problèmes:
    -Après le click sur le bouton Ajouter, j'ai un postback de la page et donc c'est toujours la première valeur de ma liste qui est sélectionnée.

    -Mon tableau n'est pas mis à jour tout de suite, il m'est nécessaire de changer de page et de revenir pour que ma valeur soit ajoutée à mon tableau.

    J'ai procédé en changeant la valeur du type (0 ou 2) dans la base mais je ne sais pas si c'est la meilleur solution.
    Je vous met 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
    30
    31
    32
    <asp:DropDownList ID="ListeSiteSecondaire" runat="server" Width="190px" >
             </asp:DropDownList>
    <%-- Tableau des sites secondaires --%>   
     <asp:SqlDataSource ID="SqlDataSourceSite" runat="server" 
               ConnectionString="<%$ ConnectionStrings:BaseExemplesConnectionString %>" 
               SelectCommand="SELECT  [Cod]
          ,[Libellé]
      FROM [Site] WHERE [Type]=2"></asp:SqlDataSource>
     
        <div class="DecalageTableau2"> 
     
            <asp:ImageButton ID="BoutonAjouterSite" 
                ImageUrl="/Images_Projet/Images/Ajouter.png" width="22" height="22" 
                runat="server" onclick="BoutonAjouterSite_Click"  /> &nbsp;
            <asp:ImageButton ID="BoutonSupprimerSite" 
                ImageUrl="/Images_Projet/Images/supprimer.png" width="22" height="22" 
                runat="server" onclick="BoutonSupprimerSite_Click" />  
     
            <GridViewEmp:EmptyGridView ID="GridViewSite" runat="server" OnRowDataBound="GridView1_RowDataBound" AllowPaging="False" ShowHeader="true" 
               AllowSorting="True" AutoGenerateColumns="False" DataKeyNames="Code" 
               DataSourceID="SqlDataSourceSite" BorderColor="#94979A"  CellPadding="10" BackColor="#ECEBEF"  HeaderStyle-BackColor="#6A97D0" AlternatingRowStyle-BackColor="#D2DBE6" HeaderStyle-ForeColor="White">    
     
     
               <Columns>
     
                                  <asp:BoundField DataField="Code" HeaderText="Code" 
                       SortExpression="Code" ShowHeader="true"/>
                   <asp:BoundField DataField="Libellé" HeaderText="Libellé" 
                       SortExpression="Libellé" ShowHeader="true"/>
               </Columns>
     
         </GridViewEmp:EmptyGridView>
    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
    protected void BoutonAjouterSite_Click(object sender, ImageClickEventArgs e)
            {
                //Définition de la chaine de connexion
                string c_string = @"data source=JF\PRO; initial catalog=BaseExemples; integrated security=true";
                SqlConnection cx = new SqlConnection(c_string);
     
                //Ouverture de la connexion
                cx.Open();
     
                //Récupération du choix de l'utilisateur pour le site secondaire
                int ChoixCode = Int32.Parse(ListeSiteSecondaire.SelectedItem.Value);
     
                //Mise à jour dans la base de données
                string rqChoixSiteSecondaire = " UPDATE Site SET Type=2 WHERE Code=@ChoixCode";
                SqlCommand SqlChoixSiteSecondaire = new SqlCommand(rqChoixSiteSecondaire, cx);
     
                SqlChoixSiteSecondaire.Parameters.Add("@ChoixCode", SqlDbType.VarChar, 50);
     
     
                //Affectation d'une valeur à SqlChoixSiteSecondaire
                SqlChoixSiteSecondaire.Parameters["@ChoixCode"].Value = ChoixCode;
     
                int nbsite = SqlChoixSiteSecondaire.ExecuteNonQuery();
     
                            //Fermeture Connexion
                cx.Close();
     
            }
    Est-ce que quelqu'un voit comment faire pour améliorer cela ?

    Merci.

  2. #2
    Membre régulier Avatar de SetaSensei
    Homme Profil pro
    Inscrit en
    Juin 2006
    Messages
    78
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 78
    Points : 104
    Points
    104
    Par défaut
    Dans votre page_load, avez-vous bien découpé le traitement avec et sans postback ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
            protected void Page_Load(object sender, EventArgs e)
            {
     
                if (!IsPostBack)
                {
                    //traitement de chargement de la page
                } else {
                    //traitement lors du postback
                }
            }
    Là où je ne vous suis pas, c'est sur l'idée de changer de page avant de rajouter un élément à votre tableau...

  3. #3
    Membre actif
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    526
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 526
    Points : 224
    Points
    224
    Par défaut
    En fait, lorsque je clique sur mon bouton Ajouter, ma requete est bien exécutée et la base de données est mise à jour.

    Le problème, c'est que mon tableau n'est pas mis à jour directement.

    Comment je peux faire pour que celui-ci se mette à jour sachant que mon tableau est définis dans ma page aspx et non en code behind ?

    Merci.

  4. #4
    Membre actif
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    526
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 526
    Points : 224
    Points
    224
    Par défaut
    J'ai résolu le problème en rajoutant dans la fonction BoutonAjouterSite_Click la ligne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    GridViewSite.DataBind();

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 14/05/2014, 12h00
  2. Réponses: 5
    Dernier message: 31/03/2010, 13h20
  3. Réponses: 0
    Dernier message: 09/09/2008, 21h53
  4. Rafraichir un formulaire en fonction d'un choix dans une liste déroulante
    Par talondachil dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 29/01/2008, 23h17

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