GridView / ListBox et Paramètres !
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 :
Code:
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> |
Le second :
Code:
1 2 3 4
| <asp:SqlDataSource ID="source_organisme" runat="server"
ConnectionString="<%$ ConnectionStrings:Formation_2014ConnectionString %>"
SelectCommand="SELECT * FROM [Organismes]">
</asp:SqlDataSource> |
Pour vous expliquez les choses, je dispose des deux tables suivantes dans ma base :
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 :
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 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> |
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.
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