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 : 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>
Le second :

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>
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 : 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>
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