2017-04-15 3 views
0
<asp:GridView ID="GridView1" runat="server" AllowSorting="True" AutoGenerateColumns="False" CssClass="table table-striped" DataKeyNames="productsID" DataSourceID="productsObj"> 
    <Columns> 
      <asp:BoundField DataField="productsID" HeaderText="productsID" ReadOnly="True" SortExpression="productsID" /> 
      <asp:BoundField DataField="name" HeaderText="name" SortExpression="name" /> 
      <asp:BoundField DataField="price" HeaderText="price" SortExpression="price" /> 
      <asp:BoundField DataField="image" HeaderText="image" SortExpression="image" /> 
    </Columns> 
</asp:GridView> 
<asp:ObjectDataSource ID="productsObj" runat="server" 
    DeleteMethod="Delete" InsertMethod="Insert" 
    OldValuesParameterFormatString="original_{0}" 
    SelectMethod="GetData" 
    TypeName="productsTableAdapters.productsTableAdapter" 
    UpdateMethod="Update"> 
     <DeleteParameters> 
      <asp:Parameter Name="Original_productsID" Type="Int32" /> 
     </DeleteParameters> 
     <InsertParameters> 
      <asp:Parameter Name="productsID" Type="Int32" /> 
      <asp:Parameter Name="name" Type="String" /> 
      <asp:Parameter Name="price" Type="Decimal" /> 
      <asp:Parameter Name="image" Type="String" /> 
     </InsertParameters> 
     <UpdateParameters> 
      <asp:Parameter Name="name" Type="String" /> 
      <asp:Parameter Name="price" Type="Decimal" /> 
      <asp:Parameter Name="image" Type="String" /> 
      <asp:Parameter Name="Original_productsID" Type="Int32" /> 
     </UpdateParameters> 
</asp:ObjectDataSource> 

<div class="col-lg-10 col-lg-offset-1 col-md-12"> 
    <div class="col-lg-6"> 
     <asp:Label ID="Label1" CssClass="h1" runat="server" Text="Add Albums"></asp:Label> 
     <asp:DetailsView ID="DetailsView1" runat="server" CssClass="table table-striped" AutoGenerateRows="False" DataKeyNames="productsID" DataSourceID="productsObj" DefaultMode="Insert"> 
      <Fields> 
       <asp:BoundField DataField="productsID" HeaderText="productsID" ReadOnly="True" SortExpression="productsID" InsertVisible="False" /> 
       <asp:BoundField DataField="name" HeaderText="name" ControlStyle-CssClass="input-sm form-control" SortExpression="name" /> 
       <asp:BoundField DataField="price" HeaderText="price" ControlStyle-CssClass=" input-sm form-control" SortExpression="price" /> 
       <asp:BoundField DataField="image" HeaderText="image" ControlStyle-CssClass=" input-sm form-control" SortExpression="image" /> 
       <asp:CommandField ShowInsertButton="True" /> 
      </Fields> 
     </asp:DetailsView> 
    </div> 

に設定されているSQL Serverテーブルの構造:IDENTITY_INSERTがOFF

CREATE TABLE [dbo].[products] 
(
    [productsID] INT IDENTITY (1, 1) NOT NULL, 
    [name] VARCHAR(50) NOT NULL, 
    [price] DECIMAL(18, 2) NOT NULL, 
    [image] VARCHAR(255) NOT NULL, 

    PRIMARY KEY CLUSTERED ([productsID] ASC) 
); 

Iいくつかのデータを表示しているGridViewのは、私は詳細ビューを経由して、いくつかの新しい行に入力したい知っていています。いくつかの奇妙な理由で、私はこのエラーを得続ける:

Cannot insert explicit value for identity column in table 'products' when IDENTITY_INSERT is set to OFF.

私は本当にこれを行うために引き起こしているかわからないので、私は解決策のためにこだわっています。どんな助けや助言も素晴らしいでしょう!

+0

オブジェクトデータソースのInsertMethodをチェックする必要があります。 'productsId'カラムに値を挿入しようとしていますか?それは 'IDENTITY'カラムなのでうまくいきません... –

+0

ここで、挿入方法のどこに詳細が表示されているのか確認しますか?私はaspx.csファイルをチェックしましたが、私のために作成された挿入メソッドはありません。申し訳ありません、私はたった1週間前にC#を使い始めました! –

+1

'.aspx'ファイルに移動し、' Insert'名( 'InsertMethod'属性の値)にカーソルを置き、右クリックして' Go To Definition'を選択すると、メソッドに移動しますそれは 'InsertMethod'として使用されています(あなたのコードビハインドである' .aspx.cs'ファイルにあると思います) –

答えて

1

エラーの理由は、あなたがいることをしたい場合は、あなたが

SET IDENTITY_INSERT ON; 

を有効にする必要があり、あなたはID列を持つテーブルに値を挿入しようとしているとSQLが示唆された、という事実によるものですID列に値を挿入したくない場合は、次のようにします。

insert into table 
(all columns except identity) 
values 
(col values for all except identity) 
+0

どこにSET IDENTITY_INSERT ONという行を追加しますか? –

+2

InsertParametersコレクションからProductsIDパラメーターを削除することをお勧めします。私は –

+0

推薦のおかげで私は確かにこれを行く与えられます。完了したら更新します。 –

関連する問題