C# 尝试删除或编辑时出现Gridview错误消息

C# 尝试删除或编辑时出现Gridview错误消息,c#,asp.net,C#,Asp.net,我收到的错误消息是: System.Data.OleDb.OLEDBEException:没有为一个或多个必需参数提供值 我做了一点阅读,所以我进入我的边界字段,将所有内容设置为只读。这并没有解决问题。我数了数我的参数,它们似乎是匹配的。因此,我真的很困惑,因为这两个修复通常都是建议的 <asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:C

我收到的错误消息是:

System.Data.OleDb.OLEDBEException:没有为一个或多个必需参数提供值

我做了一点阅读,所以我进入我的边界字段,将所有内容设置为只读。这并没有解决问题。我数了数我的参数,它们似乎是匹配的。因此,我真的很困惑,因为这两个修复通常都是建议的

<asp:SqlDataSource ID="SqlDataSource1" runat="server" 
    ConnectionString="<%$ ConnectionStrings:ConnectionString %>" 
    DeleteCommand="DELETE FROM [Students] WHERE (([Email] = ?) OR ([Email] IS NULL AND ? IS NULL))" 
    InsertCommand="INSERT INTO [Students] ([LastName], [FirstName], [MiddleInitial], [Phone], [Email], [GPA]) VALUES (?, ?, ?, ?, ?, ?)" 
    ProviderName="<%$ ConnectionStrings:ConnectionString.ProviderName %>" 
    SelectCommand="SELECT * FROM [Students]" 
    UpdateCommand="UPDATE [Students] SET [LastName] = ?, [FirstName] = ?, [MiddleInitial] = ?, [Phone] = ?, [GPA] = ? WHERE (([Email] = ?) OR ([Email] IS NULL AND ? IS NULL))">
    <DeleteParameters>
        <asp:Parameter Name="Email" Type="String" />
    </DeleteParameters>
    <InsertParameters>
        <asp:Parameter Name="LastName" Type="String" />
        <asp:Parameter Name="FirstName" Type="String" />
        <asp:Parameter Name="MiddleInitial" Type="String" />
        <asp:Parameter Name="Phone" Type="String" />
        <asp:Parameter Name="Email" Type="String" />
        <asp:Parameter Name="GPA" Type="Double" />
    </InsertParameters>
    <UpdateParameters>
        <asp:Parameter Name="LastName" Type="String" />
        <asp:Parameter Name="FirstName" Type="String" />
        <asp:Parameter Name="MiddleInitial" Type="String" />
        <asp:Parameter Name="Phone" Type="String" />
        <asp:Parameter Name="GPA" Type="Double" />
        <asp:Parameter Name="Email" Type="String" />
    </UpdateParameters>
</asp:SqlDataSource>

在这两种情况下(编辑和删除),您都有一个没有值的神秘参数:

DeleteCommand =
  "DELETE FROM [Students] WHERE (([Email] = ?) OR ([Email] IS NULL AND ? IS NULL))" 

UpdateCommand =
  "UPDATE [Students] SET [LastName] = ?, [FirstName] = ?, [MiddleInitial] = ?, [Phone] = ?, [GPA] = ? WHERE (([Email] = ?) OR ([Email] IS NULL AND ? IS NULL))">
我想说,您需要弄清楚为什么这两个命令的末尾都有
或([Email]为NULL和?IS NULL))
。或者,如果可以手动编辑发布的代码,请尝试删除命令的该部分