簡體   English   中英

具有相同密鑰的條目已經存在? 網格視圖

[英]An entry with the same key already exists? Gridview

我的頁面上有一個gridview控件,每當我嘗試使用它附帶的刪除按鈕時,它都會給我上述錯誤。 這是我的代碼:

<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" 
    DataKeyNames="ID" DataSourceID="AccessDataSource1">
    <Columns>
        <asp:CommandField ShowDeleteButton="True" ShowEditButton="True" />
        <asp:BoundField DataField="ID" HeaderText="ID" InsertVisible="False" 
            ReadOnly="True" SortExpression="ID" />
        <asp:ImageField DataImageUrlField="picPath" 
        DataImageUrlFormatString="PlaceImages/{0}" HeaderText="Picture"  ControlStyle-CssClass="editPhotoGridFormat">
        <ControlStyle CssClass="editPhotoGridFormat"></ControlStyle>
            </asp:ImageField>
        <asp:BoundField DataField="PicPath" HeaderText="Filename" />
        <asp:BoundField DataField="Title" HeaderText="Title" SortExpression="Title" />
        <asp:BoundField DataField="City" HeaderText="City" SortExpression="City" />
        <asp:BoundField DataField="Country" HeaderText="Country" 
            SortExpression="Country" />
    </Columns>
</asp:GridView>
<asp:AccessDataSource ID="AccessDataSource1" runat="server" 
    DataFile="~/App_Data/TravelJoansDB.mdb" 
    DeleteCommand="DELETE FROM [Slides] WHERE [ID] = ?" 
    InsertCommand="INSERT INTO [Slides] ([ID], [PicPath], [Title], [City], [Country]) VALUES (?, ?, ?, ?, ?)" 
    SelectCommand="SELECT * FROM [Slides]" 
    UpdateCommand="UPDATE [Slides] SET [PicPath] = ?, [Title] = ?, [City] = ?, [Country] = ? WHERE [ID] = ?">
    <DeleteParameters>
        <asp:Parameter Name="ID" Type="Int32" />
    </DeleteParameters>
    <InsertParameters>
        <asp:Parameter Name="ID" Type="Int32" />
        <asp:Parameter Name="PicPath" Type="String" />
        <asp:Parameter Name="Title" Type="String" />
        <asp:Parameter Name="City" Type="String" />
        <asp:Parameter Name="Country" Type="String" />
    </InsertParameters>
    <UpdateParameters>
        <asp:Parameter Name="PicPath" Type="String" />
        <asp:Parameter Name="Title" Type="String" />
        <asp:Parameter Name="City" Type="String" />
        <asp:Parameter Name="Country" Type="String" />
        <asp:Parameter Name="ID" Type="Int32" />
    </UpdateParameters>
</asp:AccessDataSource>

實際上,我在另一個頁面上遇到了這個問題,該頁面上除了GridView之外還有更多東西。 我很好奇這是否與它有任何關系,所以我只是創建了一個新頁面並僅復制了數據源和gridview,它仍然給我同樣的錯誤。 表中只有9條記錄,並且肯定沒有重復的PK。 表中僅ID字段被標記為主鍵。 到底是怎么回事?

不要使用命令中提到的問號。 請按如下所示進行更改,這樣就可以了

DeleteCommand="DELETE FROM [Slides] WHERE [ID] = @ID" 
InsertCommand="INSERT INTO [Slides] ([ID], [PicPath], [Title], [City], [Country]) VALUES (@ID, @PicPath, @Title, @City, @Country)" 
SelectCommand="SELECT * FROM [Slides]" 
UpdateCommand="UPDATE [Slides] SET [PicPath] = @PicPath, [Title] = @Title, [City] = @City, [Country] = @Country WHERE [ID] = @ID">

如果萬一您的表ID具有自動遞增功能,則不要在insert命令中使用ID。

DeleteCommand="DELETE FROM [Slides] WHERE [ID] = @ID" 
InsertCommand="INSERT INTO [Slides] ([PicPath], [Title], [City], [Country]) VALUES ( @PicPath, @Title, @City, @Country)" 
SelectCommand="SELECT * FROM [Slides]" 
UpdateCommand="UPDATE [Slides] SET [PicPath] = @PicPath, [Title] = @Title, [City] = @City, [Country] = @Country WHERE [ID] = @ID">

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM