我告诉你我的问题(我为我的英语道歉......):
我有一个包含我的数据库数据的GridView,来自两个SqlDataSource,一个用于我的简单项目,第二个用于下拉列表。 他们是:
<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>
第二个:
<asp:SqlDataSource ID="source_organisme" runat="server"
ConnectionString="<%$ ConnectionStrings:Formation_2014ConnectionString %>"
SelectCommand="SELECT * FROM [Organismes]">
</asp:SqlDataSource>
为了解释一下,我的数据库中有以下两个表:
Personnes (id_personne(PK),nom_personne,prenom_personne,actif_personne,#agent_personne)
Organismes (id_organisme(PK),raison_sociale,actif_organisme)
agence_personne与id_organisme有关。
我的目标是通过GridView的集成更新功能,在数据库中更改表Personnes的条目。
感谢在MSDN上发现的Tuto,here或here,我设法建立了我的下拉列表,但是一旦你进入第19到20步,我不会像我所说的那样制作数据绑定。所以我有一个完全独立的清单。
我现在给你GridView的代码:
<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>
我的最终目标:当我点击我的&#34;编辑&#34;按钮,我列表中的选定项目是表格Personne中的ID,我会从&#34; Organismes&#34;中选择一个元素。表并在我的更新参数中使用它来更新&#34; Personnes&#34;桌子。 我在其他法国论坛发布了这个,但我没有答案,我希望你能帮助我更多!
- 编辑 - 我已经忘了发布我的错误&gt;&lt; - &GT; System.InvalidOperationException:找不到控件&#39; id_organisme&#39;在ControlParameter&#39; id_organisme
中非常感谢,
Krishnak
答案 0 :(得分:0)
我终于找到了!
所以在我的DropDown列表中,我绑定了一个选定的值:
<asp:TemplateField HeaderText="Agence" SortExpression="raison_sociale">
<EditItemTemplate>
<asp:DropDownList ID="agence_personne" runat="server"
DataSourceID="source_organisme" DataTextField="raison_sociale"
DataValueField="id_organisme" AutoPostBack="True"
SelectedValue='<%# Bind("agence_personne") %>' >
</asp:DropDownList>
</EditItemTemplate>
<ItemTemplate>
<asp:Label ID="agence_personne" runat="server" Text='<%# Bind("raison_sociale") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
我只是删除了SqlDataSource中的Update Parameters。在那之后,我的更新工作完美!