Bonjour tous le monde,
Voici mon probleme, J'ai un petit formulaire dans un AccordionPane avec un DropDownList, une textbox et un bouton. J'essaye de recuperer la valeur de SelectedItem.Value lors de l'event OnClcik() du bouton.
Le probleme est que bizarement il me retourne toujours le 1er Item et non celui qui est selectionne?!? Je me demande si cela ne serait pas du au control AJAX (que je ne maitrise pas vraiment ).
Voici le code...
etudiant.aspx
et etudiant.aspx.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 <myAjax:Accordion runat="server" ID="myAcc" HeaderCssClass="HeaderCSS" HeaderSelectedCssClass="HeaderSelectedCSS" ContentCssClass="ContentCSS" AutoSize="None"> <Panes> <myAjax:AccordionPane runat="server" id="myAccPane1"> <Header>Cours inscrit</Header> <Content> <asp:Literal ID="litCours" runat="server"></asp:Literal> </Content> </myAjax:AccordionPane> <myAjax:AccordionPane runat="server" id="myAccPane2"> <Header>Liste des cours</Header> <Content> <table> <tr> <td>Cours : </td> <td><asp:DropDownList ID="ddlList" runat="server"></asp:DropDownList></td> </tr> <tr> <td>Numero de carte : </td> <td><asp:TextBox ID="txtCarte" runat="server"></asp:TextBox></td> <td><asp:RegularExpressionValidator runat="server" id="carteVal" ErrorMessage="Numero incorrect" ControlToValidate="txtCarte" ValidationExpression="^(\d{4}-){3}\d{4}$|^(\d{4} ){3}\d{4}$|^\d{CssClass="tooltip" Display="Dynamic"> </asp:RegularExpressionValidator></td> </tr> <tr> <td></td><td align="right"><asp:Button ID="btnCommand" Text="Commander" OnClick="btnCommand_Click" runat="server" /></td> </tr> </table> </Content> </myAjax:AccordionPane>
Donc rien de bien special. Je remplis mon DropdownList avec le resultat d'une requete... J'ai teste en dehors du AccordionPane et cela fonctionne bien?!
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 public partial class etudiant : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { if (Session["status"] != null) { if (Session["status"].ToString() != "etudiant") { Response.Redirect("../errors/noauth.aspx", true); } } else { Response.Redirect("../errors/noauth.aspx", true); } this.LoadlitCours(); this.LoadDdlList(); } protected void btnCommand_Click(object sender, EventArgs e) { validate service = new validate(); string val = service.Validate(txtCarte.Text); if (val == "error") { litMsg.Text = "Votre numero de carte doit commencer par 3, 4 ou 5."; } else { OleDbConnection con = new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + Server.MapPath("../req/eel.accdb")); con.Open(); string[] newCours = ddlList.SelectedItem.Value.Split(' '); OleDbCommand command = new OleDbCommand("INSERT INTO UsersCours(IdUsers, IdCours) VALUES(?, ?)", con); command.Parameters.AddWithValue("IdUsers", Session["id"].ToString()); command.Parameters.AddWithValue("IdCours", newCours[0]); if (command.ExecuteNonQuery() != 1) { litMsg.Text = "Erreur, veuillez reessayer!"; } else { Page page = HttpContext.Current.Handler as Page; string msg = "Achat reussi avec une carte " + val; if (page != null) { ScriptManager.RegisterStartupScript(page, page.GetType(), "Achat effectue", "alert('" + msg + "');window.location='../req/etudiant.aspx';", true); } } command.Dispose(); con.Close(); } } } }
Le probleme semble etre que le controle AJAX se refresh lors du OnClick du bouton et avant que le code de l'event soit executer donc lorsque je recupere SelectedItem je suis au 1er Item.
Comment je pourrais faire pour recuperer le SelectedItem avant le refresh du control AJAX?
Merci par avance
Dominic
Partager