Salutations voyageurs du Web !
Je vous présente mon soucis :
Je dispose d'un formidable GridView contenant les données présentes dans ma base, et ce grâce à deux SqlDataSource, l'un pour mes items simple et le second pour une liste déroulante.
Les voici :
Le second :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 <asp:SqlDataSource ID="source_personnes" runat="server" ConnectionString="<%$ ConnectionStrings:Formation_2014ConnectionString %>" SelectCommand="SELECT Personnes.id_personne, Personnes.nom_personne, Personnes.prenom_personne, Personnes.actif_personne, Personnes.agence_personne, Organismes.raison_sociale FROM Personnes INNER JOIN Organismes ON Personnes.agence_personne = Organismes.id_organisme WHERE (Personnes.actif_personne = 1)" UpdateCommand="UPDATE Personnes SET nom_personne=@nom_personne, prenom_personne=@prenom_personne, agence_personne = @id_organisme WHERE (id_personne = @id_personne) " DeleteCommand="UPDATE Personnes SET actif_personne = 0 WHERE (id_personne = @id_personne)"> <SelectParameters> <asp:Parameter DefaultValue="1" Name="actif_personne" Type="Int16" /> </SelectParameters> <UpdateParameters> <asp:ControlParameter Name ="id_organisme" ControlId="id_organisme" /> </UpdateParameters> </asp:SqlDataSource>
Pour vous expliquez les choses, je dispose des deux tables suivantes dans ma base :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 <asp:SqlDataSource ID="source_organisme" runat="server" ConnectionString="<%$ ConnectionStrings:Formation_2014ConnectionString %>" SelectCommand="SELECT * FROM [Organismes]"> </asp:SqlDataSource>
Personnes ( id_personne, nom_personne, prenom_personne, actif_personne, #agence_personne)
Organismes ( id_organisme, raison_sociale, actif_organisme)
#agence_personne pointe évidemment sur id_organisme.
Mon objectif est, de par la fonction d'update intégrée au GridView, de pouvoir modifier mon entrée dans la base, pour la table Personnes.
Grâce à un Tuto trouvé sur MSDN, ICI, j'ai réussi à intégré ma liste déroulante, cependant une fois arrivé à l'étape 19 - 20 Impossible pour moi d'effectuer une liaison de champ comme expliqué. J'ai donc une liste complètement indépendante.
Je vous donne maintenant le code de mon GridView :
Mon but final : Lorsque je clique sur mon bouton "Modifier", l'item selectionné dans ma liste déroulante est celui dont l'ID correspond à mon occurrence dans la table personne, je dois pouvoir modifier ma personne et enregistrer mes modifications dans ma base.
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 <asp:GridView ID="GridModif" runat="server" AllowPaging="True" AutoGenerateColumns="False" DataKeyNames="id_personne" DataSourceID="source_personnes" SkinID="dataGrid"> <Columns> <asp:TemplateField HeaderText="id" SortExpression="id_personne"> <EditItemTemplate> <asp:TextBox ID="TextBox1" runat="server" Text='<%# Bind("id_personne") %>'></asp:TextBox> </EditItemTemplate> <ItemTemplate> <asp:Label ID="Label1" runat="server" Text='<%# Bind("id_personne") %>'></asp:Label> </ItemTemplate> </asp:TemplateField> <asp:BoundField DataField="nom_personne" HeaderText="Nom" SortExpression="nom_personne" /> <asp:BoundField DataField="prenom_personne" HeaderText="Prénom" SortExpression="prenom_personne" /> <asp:TemplateField HeaderText="Agence" SortExpression="raison_sociale"> <EditItemTemplate> <asp:DropDownList ID="id_organisme" runat="server" DataSourceID="source_organisme" DataTextField="raison_sociale" DataValueField="id_organisme" AutoPostBack="True"> </asp:DropDownList> </EditItemTemplate> <ItemTemplate> <asp:Label ID="id_organisme" runat="server" Text='<%# Bind("raison_sociale") %>'></asp:Label> </ItemTemplate> </asp:TemplateField> <asp:CommandField ShowEditButton="true" /> <asp:CommandField ShowDeleteButton="true" DeleteText="Désactiver" /> </Columns> </asp:GridView>
J'obtiens actuellement l'erreur suivante :
System.InvalidOperationException: Impossible de trouver le contrôle 'id_organisme' dans ControlParameter 'id_organisme'.
Voila Voila, j'ai également posté ce matin sur MSDN, > Mon post chez eux < mais je n'ai pas eu de réponses très efficaces !
J'espère que vous pourrez m'aider un peu plus !
Merci d'avance,
Krishnak
Partager