具有access数据源的Gridview将不会更新或删除asp.c#

具有access数据源的Gridview将不会更新或删除asp.c#,c#,asp.net,gridview,C#,Asp.net,Gridview,我翻遍了所有的地方,研究了书籍、教程视频和许多文章,但我无法解决这个问题。在VisualStudio2010中插入gridview,我将数据源指定为access数据库。在规范中,我包括插入、更新和删除记录的选项。gridview出现在屏幕上,当我测试网页时,它会加载相关的按钮,用于更新和插入等。 测试页面时,我单击update按钮,更改一行,然后单击update。页面返回到以前的状态,记录保持不变。我刷新页面以确保它没有更新,而且肯定没有。 我严格遵循了教程,使用此方法时无法获取要更新或删除的字


我翻遍了所有的地方,研究了书籍、教程视频和许多文章,但我无法解决这个问题。在VisualStudio2010中插入gridview,我将数据源指定为access数据库。在规范中,我包括插入、更新和删除记录的选项。gridview出现在屏幕上,当我测试网页时,它会加载相关的按钮,用于更新和插入等。 测试页面时,我单击update按钮,更改一行,然后单击update。页面返回到以前的状态,记录保持不变。我刷新页面以确保它没有更新,而且肯定没有。 我严格遵循了教程,使用此方法时无法获取要更新或删除的字段。im使用的数据库是access数据库,一个mdb文件

我肯定我错过了一些非常简单的东西,但我不确定是什么。如果有人能提供一些帮助,我将非常感激!谢谢

这是我的表格代码

 <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" 
        DataKeyNames="Book Id" DataSourceID="SqlDataSource1">
        <Columns>
            <asp:CommandField ShowDeleteButton="True" ShowEditButton="True" 
                ShowSelectButton="True" />
            <asp:BoundField DataField="Book Id" HeaderText="Book Id" InsertVisible="False" 
                ReadOnly="True" SortExpression="Book Id" />
            <asp:BoundField DataField="ISBN Number" HeaderText="ISBN Number" 
                SortExpression="ISBN Number" />
            <asp:BoundField DataField="Title" HeaderText="Title" SortExpression="Title" />
            <asp:BoundField DataField="Author" HeaderText="Author" 
                SortExpression="Author" />
            <asp:BoundField DataField="Publisher" HeaderText="Publisher" 
                SortExpression="Publisher" />
            <asp:BoundField DataField="Date Published" HeaderText="Date Published" 
                SortExpression="Date Published" />
            <asp:CheckBoxField DataField="Availability" HeaderText="Availability" 
                SortExpression="Availability" />
            <asp:BoundField DataField="Price" HeaderText="Price" SortExpression="Price" />
        </Columns>
    </asp:GridView>
    <asp:SqlDataSource ID="SqlDataSource1" runat="server" 
        ConflictDetection="CompareAllValues" 
        ConnectionString="<%$ ConnectionStrings:booksellerConnectionString %>" 
        DeleteCommand="DELETE FROM [tblBooks] WHERE [Book Id] = ? AND (([ISBN Number] = ?) OR ([ISBN Number] IS NULL AND ? IS NULL)) AND (([Title] = ?) OR ([Title] IS NULL AND ? IS NULL)) AND (([Author] = ?) OR ([Author] IS NULL AND ? IS NULL)) AND (([Publisher] = ?) OR ([Publisher] IS NULL AND ? IS NULL)) AND (([Date Published] = ?) OR ([Date Published] IS NULL AND ? IS NULL)) AND [Availability] = ? AND (([Price] = ?) OR ([Price] IS NULL AND ? IS NULL))" 
        InsertCommand="INSERT INTO [tblBooks] ([Book Id], [ISBN Number], [Title], [Author], [Publisher], [Date Published], [Availability], [Price]) VALUES (?, ?, ?, ?, ?, ?, ?, ?)" 
        OldValuesParameterFormatString="original_{0}" 
        ProviderName="<%$ ConnectionStrings:booksellerConnectionString.ProviderName %>" 
        SelectCommand="SELECT * FROM [tblBooks]" 
        UpdateCommand="UPDATE [tblBooks] SET [ISBN Number] = ?, [Title] = ?, [Author] = ?, [Publisher] = ?, [Date Published] = ?, [Availability] = ?, [Price] = ? WHERE [Book Id] = ? AND (([ISBN Number] = ?) OR ([ISBN Number] IS NULL AND ? IS NULL)) AND (([Title] = ?) OR ([Title] IS NULL AND ? IS NULL)) AND (([Author] = ?) OR ([Author] IS NULL AND ? IS NULL)) AND (([Publisher] = ?) OR ([Publisher] IS NULL AND ? IS NULL)) AND (([Date Published] = ?) OR ([Date Published] IS NULL AND ? IS NULL)) AND [Availability] = ? AND (([Price] = ?) OR ([Price] IS NULL AND ? IS NULL))">
        <DeleteParameters>
            <asp:Parameter Name="original_Book_Id" Type="Int32" />
            <asp:Parameter Name="original_ISBN_Number" Type="String" />
            <asp:Parameter Name="original_ISBN_Number" Type="String" />
            <asp:Parameter Name="original_Title" Type="String" />
            <asp:Parameter Name="original_Title" Type="String" />
            <asp:Parameter Name="original_Author" Type="String" />
            <asp:Parameter Name="original_Author" Type="String" />
            <asp:Parameter Name="original_Publisher" Type="String" />
            <asp:Parameter Name="original_Publisher" Type="String" />
            <asp:Parameter Name="original_Date_Published" Type="String" />
            <asp:Parameter Name="original_Date_Published" Type="String" />
            <asp:Parameter Name="original_Availability" Type="Boolean" />
            <asp:Parameter Name="original_Price" Type="Decimal" />
            <asp:Parameter Name="original_Price" Type="Decimal" />
        </DeleteParameters>
        <InsertParameters>
            <asp:Parameter Name="Book_Id" Type="Int32" />
            <asp:Parameter Name="ISBN_Number" Type="String" />
            <asp:Parameter Name="Title" Type="String" />
            <asp:Parameter Name="Author" Type="String" />
            <asp:Parameter Name="Publisher" Type="String" />
            <asp:Parameter Name="Date_Published" Type="String" />
            <asp:Parameter Name="Availability" Type="Boolean" />
            <asp:Parameter Name="Price" Type="Decimal" />
        </InsertParameters>
        <UpdateParameters>
            <asp:Parameter Name="ISBN_Number" Type="String" />
            <asp:Parameter Name="Title" Type="String" />
            <asp:Parameter Name="Author" Type="String" />
            <asp:Parameter Name="Publisher" Type="String" />
            <asp:Parameter Name="Date_Published" Type="String" />
            <asp:Parameter Name="Availability" Type="Boolean" />
            <asp:Parameter Name="Price" Type="Decimal" />
            <asp:Parameter Name="original_Book_Id" Type="Int32" />
            <asp:Parameter Name="original_ISBN_Number" Type="String" />
            <asp:Parameter Name="original_ISBN_Number" Type="String" />
            <asp:Parameter Name="original_Title" Type="String" />
            <asp:Parameter Name="original_Title" Type="String" />
            <asp:Parameter Name="original_Author" Type="String" />
            <asp:Parameter Name="original_Author" Type="String" />
            <asp:Parameter Name="original_Publisher" Type="String" />
            <asp:Parameter Name="original_Publisher" Type="String" />
            <asp:Parameter Name="original_Date_Published" Type="String" />
            <asp:Parameter Name="original_Date_Published" Type="String" />
            <asp:Parameter Name="original_Availability" Type="Boolean" />
            <asp:Parameter Name="original_Price" Type="Decimal" />
            <asp:Parameter Name="original_Price" Type="Decimal" />
        </UpdateParameters>
    </asp:SqlDataSource>

我不一定有一个直截了当的答案,但有一些建议:

这可能是因为
更新的复杂性:

UPDATE [tblBooks] SET [ISBN Number] = ?, [Title] = ?, [Author] = ?, [Publisher] = ?, [Date Published] = ?, [Availability] = ?, [Price] = ? WHERE [Book Id] = ? AND (([ISBN Number] = ?) OR ([ISBN Number] IS NULL AND ? IS NULL)) AND (([Title] = ?) OR ([Title] IS NULL AND ? IS NULL)) AND (([Author] = ?) OR ([Author] IS NULL AND ? IS NULL)) AND (([Publisher] = ?) OR ([Publisher] IS NULL AND ? IS NULL)) AND (([Date Published] = ?) OR ([Date Published] IS NULL AND ? IS NULL)) AND [Availability] = ? AND (([Price] = ?) OR ([Price] IS NULL AND ? IS NULL))
因为你有一个相当大的
WHERE
子句。如果您将其缩减为:

UPDATE [tblBooks] SET [ISBN Number] = ?, [Title] = ?, [Author] = ?, [Publisher] = ?, [Date Published] = ?, [Availability] = ?, [Price] = ? WHERE [Book Id] = ?
并相应地削减您的
,这有什么影响吗

另外(对我来说已经有一段时间了),我注意到您的参数名(例如
Book\u Id
)与数据字段绑定(例如
Book Id
)不完全匹配,因此可能会引起问题。我相信他们需要配合(或者他们这样做是好事),但在这种情况下,他们没有


可能值得修改您的数据库,使列名类似于[Book\u Id]、[ISBN\u Number]等。我认为数据库列中很少有空格(根据我的经验,当然很少见……但我没有那么丰富的经验!)

只是为了好玩,尝试删除行
ConflictDetection=“CompareAllValues”
。现在会进行更新吗?

您好,您是否也可以共享页面的代码隐藏文件(aspx.cs文件)?PS我已经将你的问题重新标记为“asp.net”而不是“classic asp”,以使标记正确,从而希望合适的人能够帮助你走出Hello!我的asp.cs文件为空,或多或少-仅包含默认代码。。。上面已经编辑过了。谢谢。等等,你的.cs是空的吗?您如何处理按钮的OnClick事件?数据绑定发生在哪里?(也许我也遗漏了什么。)这一切都在gridview中处理。我在designer视图中单击gridview的工具提示,选择“启用编辑”和“启用删除”,然后将这两个按钮放在gridview控件的单独列中,我的理解是向导从中生成了所有相关代码。当我在测试网页时单击“编辑”按钮时,对话框会对单击做出响应,因此会发生一些单击事件。我想您可能对数据绑定和空间有所了解。在前面进行故障排除时,我使用detailsview控件成功地将值插入到表中。我为所有字段输入了值并选择了“插入”。当我插入它时,添加了一条记录,其中包含除ibsn编号和发布日期之外的所有字段,正如您所指出的,这些字段上有一个空格。。。我想你可能已经解决了!我会很快给你回复的!谢谢你对字段标题中的空格是正确的-我在access、Update和Delete now works中更正了这些。update语句的“折磨”设置是由visual studio插入的,我同意这看起来很奇怪,因为它有这么多的子句-对刚开始的人来说有点困惑!不管怎样,你得到了我的感激,并使我免于拔出我所有的头发。非常感谢!:)
UPDATE [tblBooks] SET [ISBN Number] = ?, [Title] = ?, [Author] = ?, [Publisher] = ?, [Date Published] = ?, [Availability] = ?, [Price] = ? WHERE [Book Id] = ?