ASP.NET: используйте ID из запроса в представлении SQL Server, используемом в GridView, для управления DetailsView, который запрашивает таблицу

Пожалуйста, простите мое невежество. У меня есть немного веб-программирования, но я новичок в ASP.NET и считаю, что это мистифицирует, пытаясь сделать что-то не из коробки.

У меня есть GridView, который получает свои данные из представления SQL Server. У меня есть DetailsView, который должен управлять данными в таблице. Я не могу понять, как правильно связать GridView с DetailsView.

Ниже приведен код раздела страницы aspx, который содержит GridView и DetailsView. Последней ошибкой в бесконечной обработке ошибок является: Должен объявить скалярную переменную "@ID".

Буду признателен за любую помощь, которую может предложить любой. Благодарю.

<asp:gridview id="gvVendorContacts" runat="server" autogeneratecolumns="False" datasourceid="dsApplications_Contacts" allowsorting="True" cellpadding="4" cellspacing="2" autogenerateselectbutton="True" datakeynames="ContactID" onselectedindexchanged="gvVendorContacts_SelectedIndexChanged">
 <alternatingrowstyle backcolor="#E8F3FF">
 <columns>
 <asp:boundfield datafield="FullName" headertext="Name" readonly="True" sortexpression="FullName">
 <asp:boundfield datafield="Title" headertext="Title" sortexpression="Title">
 <asp:boundfield datafield="Role" headertext="Role" sortexpression="Role">
 <asp:boundfield datafield="Office Phone" headertext="Office Phone" sortexpression="Office Phone">
 <asp:boundfield datafield="Mobile Phone" headertext="Mobile Phone" sortexpression="Mobile Phone">
 <asp:templatefield headertext="Email" sortexpression="Email">
 <itemtemplate>
 <a href="Mailto:<%# Eval(" email")="" %="" target="_blank">"><%#Eval("Email")%></a>
 </itemtemplate>
 </asp:templatefield>
 </asp:boundfield></asp:boundfield></asp:boundfield></asp:boundfield></asp:boundfield></columns>
</alternatingrowstyle></asp:gridview>





 <asp:detailsview id="dvVendorContacts" runat="server" autogeneraterows="False" datakeynames="ID" datasourceid="dsVendorContacts" backcolor="White" bordercolor="#CC9966" borderstyle="None" borderwidth="1px" cellpadding="4">
 <editrowstyle backcolor="#FFCC66" font-bold="True" forecolor="#663399">
 <fields>
 <asp:boundfield datafield="ContactID" headertext="ID" insertvisible="False" readonly="True" sortexpression="ID">
 <asp:boundfield datafield="FName" headertext="FName" sortexpression="FName">
 <asp:boundfield datafield="LName" headertext="LName" sortexpression="LName">
 <asp:boundfield datafield="Title" headertext="Title" sortexpression="Title">
 <asp:boundfield datafield="Role" headertext="Role" sortexpression="Role">
 <asp:boundfield datafield="OfficePhone" headertext="OfficePhone" sortexpression="OfficePhone">
 <asp:boundfield datafield="MobilePhone" headertext="MobilePhone" sortexpression="MobilePhone">
 <asp:boundfield datafield="Email" headertext="Email" sortexpression="Email">
 </asp:boundfield></asp:boundfield></asp:boundfield></asp:boundfield></asp:boundfield></asp:boundfield></asp:boundfield></asp:boundfield></fields>
 <footerstyle backcolor="#FFFFCC" forecolor="#330099">
 <headerstyle backcolor="#990000" font-bold="True" forecolor="#FFFFCC">
 <pagerstyle backcolor="#FFFFCC" forecolor="#330099" horizontalalign="Center">
 <rowstyle backcolor="White" forecolor="#330099">
 </rowstyle></pagerstyle></headerstyle></footerstyle></editrowstyle></asp:detailsview>

 <asp:sqldatasource id="dsVendorContacts" runat="server" connectionstring="<%$ ConnectionStrings:MDSConnectionString %>" deletecommand="DELETE FROM [Contacts] WHERE [ID] = @ID" insertcommand="INSERT INTO [Contacts] ([FName], [LName], [Title], [Role], [OfficePhone], [MobilePhone], [Email]) VALUES (@FName, @LName, @Title, @Role, @OfficePhone, @MobilePhone, @Email)" selectcommand="SELECT [ID], [FName], [LName], [Title], [Role], [OfficePhone], [MobilePhone], [Email] FROM [Contacts] WHERE ([ID] = @ID)" updatecommand="UPDATE [Contacts] SET [FName] = @FName, [LName] = @LName, [Title] = @Title, [Role] = @Role, [OfficePhone] = @OfficePhone, [MobilePhone] = @MobilePhone, [Email] = @Email WHERE [ID] = @ID">
 <deleteparameters>
 <asp:parameter name="ID" type="Int32">
 </asp:parameter></deleteparameters>
 <insertparameters>
 <asp:parameter name="FName" type="String">
 <asp:parameter name="LName" type="String">
 <asp:parameter name="Title" type="String">
 <asp:parameter name="Role" type="String">
 <asp:parameter name="OfficePhone" type="String">
 <asp:parameter name="MobilePhone" type="String">
 <asp:parameter name="Email" type="String">
 </asp:parameter></asp:parameter></asp:parameter></asp:parameter></asp:parameter></asp:parameter></asp:parameter></insertparameters>
 <updateparameters>
 <asp:parameter name="FName" type="String">
 <asp:parameter name="LName" type="String">
 <asp:parameter name="Title" type="String">
 <asp:parameter name="Role" type="String">
 <asp:parameter name="OfficePhone" type="String">
 <asp:parameter name="MobilePhone" type="String">
 <asp:parameter name="Email" type="String">
 <asp:parameter name="ID" type="Int32">
 </asp:parameter></asp:parameter></asp:parameter></asp:parameter></asp:parameter></asp:parameter></asp:parameter></asp:parameter></updateparameters>
 <selectparameters>
 <asp:controlparameter controlid="gvVendorContacts" defaultvalue="NULL" name="ContactID" propertyname="SelectedValue" type="Int32">
 </asp:controlparameter></selectparameters>
 </asp:sqldatasource>
1 ответ

Похоже, ваш оператор select ожидает @ID, но ваш SelectParameter - ContactId.

licensed under cc by-sa 3.0 with attribution.