2012-09-12 86 views
0

我想更新一個表,並有indentity列。所以當我嘗試更新gridview中的一行時,出現以下錯誤:「無法更新標識列'ManufactureID'。]」我知道您可以插入更新的行,然後刪除舊行。更新SQL TABLE使用標識列使用GridView更新

<asp:GridView ID="GridView1" runat="server" AllowSorting="True" AutoGenerateColumns="False"  DataKeyNames="Name" DataSourceID="SqlDataSource1" EmptyDataText="There are no data records to display."> 
     <Columns> 
      <asp:CommandField ShowDeleteButton="True" ShowEditButton="True" ShowSelectButton="True" /> 
      <asp:BoundField DataField="ManufactureID" HeaderText="ManufactureID" ReadOnly="True" SortExpression="ManufactureID" /> 
      <asp:BoundField DataField="Name" HeaderText="Name" SortExpression="Name" /> 
      <asp:BoundField DataField="Address" HeaderText="Address" SortExpression="Address" /> 
      <asp:BoundField DataField="Providence" HeaderText="Providence" SortExpression="Providence" /> 
      <asp:BoundField DataField="City" HeaderText="City" SortExpression="City" /> 
      <asp:BoundField DataField="ZipCode" HeaderText="ZipCode" SortExpression="ZipCode" /> 
      <asp:BoundField DataField="Country" HeaderText="Country" SortExpression="Country" /> 
      <asp:BoundField DataField="Phone" HeaderText="Phone" SortExpression="Phone" /> 
      <asp:BoundField DataField="Fax" HeaderText="Fax" SortExpression="Fax" /> 
      <asp:BoundField DataField="Email" HeaderText="Email" SortExpression="Email" /> 
     </Columns> 
    </asp:GridView> 
    <asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:GreatGrizzlyConnectionString1 %>" DeleteCommand="DELETE FROM [Manufacturer] WHERE [Name] = @Name" InsertCommand="INSERT INTO [Manufacturer] ([Name], [Address], [Providence], [City], [ZipCode], [Country], [Phone], [Fax], [Email]) VALUES (@Name, @Address, @Providence, @City, @ZipCode, @Country, @Phone, @Fax, @Email)" ProviderName="<%$ ConnectionStrings:SQLTestConnectionString1.ProviderName %>" SelectCommand="SELECT [ManufactureID], [Name], [Address], [Providence], [City], [ZipCode], [Country], [Phone], [Fax], [Email] FROM [Manufacturer]" UpdateCommand="UPDATE [Manufacturer] SET [ManufactureID] = @ManufactureID, [Address] = @Address, [Providence] = @Providence, [City] = @City, [ZipCode] = @ZipCode, [Country] = @Country, [Phone] = @Phone, [Fax] = @Fax, [Email] = @Email WHERE [Name] = @Name"> 
     <DeleteParameters> 
      <asp:Parameter Name="Name" Type="String" /> 
     </DeleteParameters> 
     <InsertParameters> 
      <asp:Parameter Name="Name" Type="String" /> 
      <asp:Parameter Name="Address" Type="String" /> 
      <asp:Parameter Name="Providence" Type="String" /> 
      <asp:Parameter Name="City" Type="String" /> 
      <asp:Parameter Name="ZipCode" Type="String" /> 
      <asp:Parameter Name="Country" Type="String" /> 
      <asp:Parameter Name="Phone" Type="String" /> 
      <asp:Parameter Name="Fax" Type="String" /> 
      <asp:Parameter Name="Email" Type="String" /> 
     </InsertParameters> 
     <UpdateParameters> 
      <asp:Parameter Name="ManufactureID" Type="Int32" /> 
      <asp:Parameter Name="Address" Type="String" /> 
      <asp:Parameter Name="Providence" Type="String" /> 
      <asp:Parameter Name="City" Type="String" /> 
      <asp:Parameter Name="ZipCode" Type="String" /> 
      <asp:Parameter Name="Country" Type="String" /> 
      <asp:Parameter Name="Phone" Type="String" /> 
      <asp:Parameter Name="Fax" Type="String" /> 
      <asp:Parameter Name="Email" Type="String" /> 
      <asp:Parameter Name="Name" Type="String" /> 
     </UpdateParameters> 
    </asp:SqlDataSource> 

回答

0

<asp:SqlDataSource>標籤的UpdateCommand屬性指定的語句試圖設置[ManufactureID],這就是爲什麼你得到錯誤:

UpdateCommand="UPDATE [Manufacturer] SET [ManufactureID] = @ManufactureID, [Address] = @Address, [Providence] = @Providence, [City] = @City, [ZipCode] = @ZipCode, [Country] = @Country, [Phone] = @Phone, [Fax] = @Fax, [Email] = @Email WHERE [Name] = @Name"

您需要刪除[ManufactureID] = @ManufactureID,和也從<UpdateParameters>刪除<asp:Parameter Name="ManufactureID" Type="Int32" />,這應該做的伎倆。

+0

工作完美!謝謝您的幫助!!!! –

+0

你介意標記它回答嗎? –