0


本、チュートリアル ビデオ、多数の記事を調べましたが、この問題を解決することはできません。Visual Studio 2010 内にグリッドビューを挿入し、データ ソースをアクセス データベースとして指定します。仕様には、レコードを挿入、更新、および削除するオプションが含まれています。グリッドビューが画面に表示され、Web ページをテストすると、更新や挿入などに関連するボタンが読み込まれます。ページをテストするときは、更新ボタンをクリックし、行を変更してから更新をクリックします。ページは以前の状態に戻りますが、レコードは同じままです。ページを更新して、更新されていないことを確認しましたが、間違いなく更新されていません。チュートリアルに正確に従っていますが、この方法を使用すると、フィールドを更新または削除できません。使用しているデータベースは、アクセス用の 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>

以下のasp.csファイル。

namespace Second
{
    public partial class _Default : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {

        }
    }
}
4

2 に答える 2

0

キックのために、行を削除してみてください ConflictDetection="CompareAllValues"。更新はすぐに行われますか?

于 2013-03-28T05:35:17.367 に答える
0

私は必ずしも直接的な答えを持っているわけではありませんが、いくつかの提案があります:

の複雑さが原因である可能性がありますUPDATE

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] = ?

そして、それに応じてあなたをトリミングしまし<UpdateParameters>たが、それは何か効果がありますか?

また (そして、私にとっては少し時間が経ちました)、パラメーター名 (例: Book_Id) がデータ フィールド バインディング (例: ) と正確に一致しないBook Idため、問題が発生している可能性があることに気付きました。拘束力のある目的のために一致させる必要がある(または一致させるのは良いことである)と私は信じていますが、この場合はそうではありません。

列名が[Book_Id]、[ISBN_Number]などになるようにデータベースを変更する価値があるかもしれません...データベース列にスペースがあることは非常にまれだと思います(私の経験からは確かにまれです...しかし、私はそうです経験者ではありません!)

于 2013-03-27T21:55:36.367 に答える