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" /> <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>Est-ce que quelqu'un voit comment faire pour améliorer cela ?
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(); }
Merci.
Partager