Bonjour à tous !
Je suis bloqué depuis plusieurs jours sur mon code.
J'ai plusieurs DropDownList. Je souhaite prendre la valeur de 2 d'entre elles pour les utiliser comme paramètres pour une procédure stockée et afficher le résultat dans une autre DropDownList.
J'ai tout d'abord utiliser le designer pour le faire. Cela fonctionne parfaitement. Cependant, je souhaite ajouter des lignes de manière dynamique et pour cela, il me faut écrire tout ça en code behind et là, ça coince avec plein d'erreurs.
Voici un dessin pour résumer ce que je veux faire :
Voici le code qui fonctionne en designer et que je dois rendre générique en code behind :
Et voici comment j'ai traduit cela en code behind :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 <asp:DropDownList ID="DropDownList4" runat="server" DataSourceID="SqlDataSource3" DataTextField="Code" DataValueField="Code" AutoPostBack="True"> </asp:DropDownList> <asp:SqlDataSource ID="SqlDataSource3" runat="server" ConnectionString="<%$ ConnectionStrings:InternalDistributionConnectionString %>" SelectCommand="DDLists" SelectCommandType="StoredProcedure"> <SelectParameters> <asp:ControlParameter ControlID = "DropDownList3" Name = "matable" PropertyName ="SelectedValue" Type= "String" /> <asp:ControlParameter ControlID = "DropDownList1" Name = "projectID" PropertyName ="SelectedValue" Type= "String" /> </SelectParameters> </asp:SqlDataSource>
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 TableCell cell3 = new TableCell(); DropDownList ddl3 = new DropDownList(); ddl3.ID = "DropDownListRow_" + rowsCount + "Col_3"; SqlDataSource SQLDS2 = new SqlDataSource(); Page.Controls.Add(SQLDS2); SQLDS2.ConnectionString = SQLDS.ConnectionString; SQLDS2.SelectCommand = "DDLists"; SQLDS2.SelectCommandType = SqlDataSourceCommandType.StoredProcedure; ControlParameter matable = new ControlParameter(); matable.Name = "maTable"; matable.PropertyName = "SelectedValue"; matable.Type = TypeCode.String; matable.ControlID = "DropDownList1"; ControlParameter projectID = new ControlParameter(); projectID.Name = "projectID"; projectID.ControlID = "DropDownList3"; projectID.PropertyName = "SelectedValue"; projectID.Type = TypeCode.String; SQLDS2.SelectParameters.Clear(); SQLDS2.SelectParameters.Add(matable); SQLDS2.SelectParameters.Add(projectID); SQLDS2.DataBind(); ddl3.DataSource = SQLDS2; ddl3.DataTextField = "Code"; ddl3.DataValueField = "Code"; ddl3.AutoPostBack = true; ddl3.DataBind(); cell3.Controls.Add(ddl3); row.Cells.Add(cell3);
Voici enfin le code de ma procédure stockée :
Et au cas où les erreurs seraient ailleurs, voici tout mon code :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 ALTER PROCEDURE DDLists @requete nvarchar(255) = '', @maTable nvarchar(255), @projectID nvarchar(255) AS SET @requete = 'SELECT Code FROM '+ @maTable +' WHERE (ProjectID = '+ @projectID +')' EXECUTE(@requete)
Code aspx
Code aspx.cs
Sur un autre forum, on m'a dit que c'était peut-être dû au fait que les contrôles dynamiquement créés ne persistaient pas lors d'un postback. C'est peut-être ça mais je n'ai aucune idée de ce qu'il faut faire pour corriger ce problème.
J'espère que vous pourrez m'aider![]()
Partager