Probleme datasource d'un dropdownlist en mode edit gridview
Bonjour,
apres avoir passé des heures sur le net à la recherche de solutions je viens poster ici dans l'espoir qu'il existe une solution à mon problème.
Je dispose d'un fichier .aspx dans lequel j'affiche un gridview à partir des données d'une base Microsoft SQL (sqldatasource1).
Dans ce gridview je dispose d'un certain nombre de colonnes que je souhaite modifier avec le mode edit du gridview.
Cependant la petite subtilité est que je souhaite dans ce mode edit affiche une liste déroulante (DropDownList) à partir d'une deuxième datasource (sqldatasource2).
Dans chacune de mes datasources je fais appel à des procédures stockées.
La datasource2 qui me sert pour la ddl prend en paramètre de procédure un champ de la ligne sélectionnée.
une erreur est alors générée lorsque j'appuis sur le bouton d'edit
Détails de l'exception system.Data.SqlClient.SqlException: Must declare the scalar variable "@Dirigeant".
Ci-dessous le code de la page modif.aspx
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 34 35 36 37 38 39 40 41 42 43 44 45
|
<%@ Page Title= ”modif” Language=“ C” MasterPageFile=” ~/Site.master” AutoEventWireup=“true“ CodeFile=”modif.aspx” Inherits=”Account_modif” %>
<asp:Content Id=”HeaderContent” runat=”server” ContentPlaceHolderID=”HeadContent”>
</asp:Content>
<asp:Content Id=”BodyContent” runat=”server” ContentPlaceHolderID=”MainContent”>
<asp:GridView Width=”100%” ID=”GridView1” runat=”server” AutoGenerateColumns=”False” DataKeyNames=”label” AllowPaging=”True” AlloSorting=”True” DatasourceID=”SqlDataSource1”>
<Columns>
<asp:BoundField DataField=”Label” ReadOnly=”true” HeaderText=”Label” SortExpression=”Label” />
……
<asp:BoundField DataField=”Dirigeant” ReadOnly=”True” HeaderText=”Dirigeant” SortExpression=”Dirigeant” />
<asp:TemplateField HeaderText=”Ressource” ControlStyle-Width=”100px” SortExpression=”Ressource”>
<EditItemTemplate>
<asp:DropDownList ID=”DropDownList1” runat=”server” DataSourceID=”SqlDataSource2” DataTextField=”RSC” DataValueField=”RSC” SelectedValue=’<%# Bind(“Ressource”) %’>
</asp:DropDownList>
</EditItemTemplate>
<ItemTemplate>
<asp:Label ID=”Label1” runat=”server” Text=’<%# Bind(“Ressource”)%’></asp:Label>
</ItemTemplate>
</asp:TemplateField>
……
<asp:CommandField ShowEditButton=”True” ></asp:CommandField>
</Columns>
<HeaderStyle BackColor=”LightGray”></HeaderStyle>
<PagerSettings Mode=”NumericFirstLast” LastPageText=”Fin” FirstPageText=”Début”/>
</asp:GridView>
<asp:SqlDataSource Id=”SqlDataSource1” runat=”server” ConnectionString=”<%$ ConnectionStrings:ApplicationServices3 %>”
SelectCommand=”EXECUTE sp_ListeAgentparNiveau @user”
UpdateCommand=”EXECUTE sp_MAJInfosAgent2 @Label, @Ressource”></asp:SqlDataSource>
<asp:SqlDataSource Id=”SqlDataSource2” runat=”server” ConnectionString=”<%$ ConnectionStrings:Applications3 %>”
SelectCommand=”EXECUTE sp_ListeRessourceSecteur @Dirigeant”>
</asp:SqlDataSource>
</asp:Content> |
C’est donc au niveau du SqlDataSource2 ici, qu’un bug subsiste au niveau de “@Dirigeant”, si je passe un argument en dur cela fonctionne très bien.
Que dois-je changer pour que ma SqlDataSource2 puisse récupérer le dirigeant de la ligne sélectionné en mode edit ?
ps: J’ai essayé de passer Dirigeant dans le datakeynames sans succès, la même erreur subsiste.