【问题标题】:ASP.NET: Use ID from query against a SQL Server view used in a GridView to control DetailsView that queries a tableASP.NET:使用查询中的 ID 针对 GridView 中使用的 SQL Server 视图来控制查询表的 DetailsView
【发布时间】:2012-03-21 02:05:52
【问题描述】:

请原谅我的无知。我做过一些网络编程,但对 ASP.NET 很陌生,在尝试做一些开箱即用的事情时发现它很神秘。

我有一个从 SQL Server 视图获取数据的 GridView。我有一个 DetailsView 需要操作表中的数据。我无法弄清楚如何将 GridView 正确链接到 DetailsView。

下面是包含 GridView 和 DetailsView 的 aspx 页面部分的代码。无穷无尽的错误中的最新错误是:必须声明标量变量“@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") %>"><%#Eval("Email")%></a>
            </ItemTemplate>
        </asp:TemplateField>
    </Columns>
</asp:GridView>
<asp:SqlDataSource ID="dsApplications_Contacts" runat="server" 
    ConnectionString="<%$ ConnectionStrings:MDSConnectionString %>" 
    SelectCommand="SELECT [ApplicationID], [ContactID], [FName], [LName], [FullName], [Title], [Role], [OfficePhone] As [Office Phone], [MobilePhone] As [Mobile Phone], [Email] FROM [vw_Applications_Contacts] WHERE ApplicationName = 'Bloomberg'">
</asp:SqlDataSource>




 <asp:DetailsView ID="dvVendorContacts" runat="server" AutoGenerateRows="False" 
     DataKeyNames="ID" DataSourceID="dsVendorContacts" Height="100px" 
     Width="200px" 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" />
     </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" />
 </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" />
     </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" />
     </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" />
     </UpdateParameters>
     <SelectParameters>
        <asp:ControlParameter ControlID="gvVendorContacts" DefaultValue="NULL" 
        Name="ContactID" PropertyName="SelectedValue" Type="Int32" />
     </SelectParameters>
 </asp:SqlDataSource>

【问题讨论】:

    标签: asp.net


    【解决方案1】:

    看起来您的 select 语句需要 @ID,但您的 SelectParameter 是 ContactId。

    【讨论】:

      猜你喜欢
      • 2021-10-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-04-17
      • 1970-01-01
      • 2020-06-12
      相关资源
      最近更新 更多