[英]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.