Bonjour j'ai une page qui contient une listeBox
Que je remplis grâce à une base de donnée au chargement de la page.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 <asp:DropDownList ID="typ" name="typ" runat="server" ></asp:DropDownList>
Je remplis donc la listebox avec le libellé et dans le même temps je remplis une list qui contient les id des libellé.
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 //Création de la connexion conn = Connection.getConnectionGetteur(); //Ouverture de la connection conn.Open(); //Sert à avoir le nombre de ligne de la requête cmdType = new SqlCommand(null, conn); cmdType.CommandText = "SELECT * FROM TYPEP "; readType = cmdType.ExecuteReader(); typ.Items.Clear(); while (readType.Read()) { string libelle = (string)readType.GetSqlString(1); Guid id = readType.GetGuid(0); typ.Items.Add(libelle); idType.Add(id); }
Quand tous les champs sont validé, on clique sur le bouton enregistré. Qui exécute une action d'on une requête sql
Tous ça marche, mais pas comme il faut. En effet pour récupéré l'id je me sert de l'indice que me renvoie this.typ.SelectedIndex
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 //Création de la connexion conn = Connection.getConnectionSetteur(); //Ouverture de la connection conn.Open(); //Insertion du nouveau bien //Requête préparer qui empeche l'injection insert = new SqlCommand(null, conn); insert.CommandText = "INSERT DEMANDE (codeDemande, villeRecherche, surfaceMin, surfaceMax, prixMin, prixMax, idIntervenant, idType, codePostalRecherche) " + "values (NEWID(), @villeRecherche, @surfaceMin, @surfaceMax, @prixMin, @prixMax, @idIntervenant, @idType, @codePostalRecherche)"; SqlParameter villeRecherche = new SqlParameter("@villeRecherche", SqlDbType.Text, 20); villeRecherche.Value = this.ville.Text; SqlParameter codePostalRecherche = new SqlParameter("@codePostalRecherche", SqlDbType.Text, 5); codePostalRecherche.Value = this.cp.Text; SqlParameter surfaceMin = new SqlParameter("@surfaceMin", SqlDbType.Int); surfaceMin.Value = this.surfaceMin.Text; SqlParameter surfaceMax = new SqlParameter("@surfaceMax", SqlDbType.Int); surfaceMax.Value = this.surfaceMax.Text; SqlParameter prixMin = new SqlParameter("@prixMin", SqlDbType.Int); prixMin.Value = this.prixMin.Text; SqlParameter prixMax = new SqlParameter("@prixMax", SqlDbType.Int); prixMax.Value = this.prixMax.Text; SqlParameter idIntervenant = new SqlParameter("@idIntervenant", SqlDbType.UniqueIdentifier); idIntervenant.Value = Session["idLogin"]; SqlParameter idTYPEP = new SqlParameter("@idType", SqlDbType.UniqueIdentifier); idTYPEP.Value = this.idType[indexType]; insert.Parameters.Add(villeRecherche); insert.Parameters.Add(surfaceMin); insert.Parameters.Add(surfaceMax); insert.Parameters.Add(prixMin); insert.Parameters.Add(prixMax); insert.Parameters.Add(idIntervenant); insert.Parameters.Add(idTYPEP); insert.Parameters.Add(codePostalRecherche); insert.ExecuteNonQuery();
Soit l'indice de la valeur sélectionner dans la liste box.
Mais en inspectant ma base, je me suis rendu compte que l'id enregistré était toujours le même. Le premier.
En faisant un débugage, je me suis rendu compte aussi que quand je clique sur le bouton. Il rechargeais d'abord la page. Puis exécuter le code du bouton.
Parce que mes valeur ne sont pas réinitialisé dans mes textbox ça ne pose pas trop de problème. Sauf que la listebox elle est rechargé et reprend ça valeur par défaut. Je me retrouve donc toujours avec la première valeur de sélectionner.
Je ne trouve pas de solution à mon problème, je ne voie même pas pourquoi le onload se fait avant le click du bouton.
Partager