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:
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> |
Code:
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.