2016-09-10 83 views
0

グリッドビューの行を更新しようとしていますが、次のようなエラーが発生します。 名前が 'ProductName'選択したデータソースに見つかりませんでした。'ProductName'という名前のフィールドまたはプロパティが選択されたデータソースに見つかりません

私はNorthwindデータベースを使用しています。

これは私のコードです:

protected void gvProducts_RowUpdating(object sender, GridViewUpdateEventArgs e) 
{ 
    SqlConnection connection = new SqlConnection(); 
    connection.ConnectionString = ConfigurationManager.ConnectionStrings["myConnection"].ConnectionString; 
    SqlCommand command = new SqlCommand(); 
    command.Connection = connection; 
    command.CommandText = "UPDATE Products SET ProductName = @ProductName WHERE ProductID [email protected] ProductID"; 
    command.Parameters.AddWithValue("@ProductID", Convert.ToInt32(gvProducts.DataKeys[e.RowIndex]["ProductID"])); 
    TextBox tb = (TextBox)gvProducts.Rows[e.RowIndex].Cells[0].Controls[0]; 
    command.Parameters.AddWithValue("@ProductName", tb.Text); 
    int effect = 0; 
    try 
    { 
     connection.Open(); 
     effect = command.ExecuteNonQuery(); 
    } 
    catch (Exception ex) 
    { 

    } 
    finally 
    { 
     connection.Close(); 
     gvProducts.EditIndex = -1; 
     gvProducts.DataBind(); 
    } 
    if (effect != 0) 
     fillDetailed(); 
} 

データベース方式は次のとおりです。

CREATE TABLE [dbo].[Products] (
[ProductID]  INT   IDENTITY (1, 1) NOT NULL, 
[ProductName]  NVARCHAR (40) NOT NULL, 
[SupplierID]  INT   NULL, 
[CategoryID]  INT   NULL, 
[QuantityPerUnit] NVARCHAR (20) NULL, 
[UnitPrice]  MONEY   CONSTRAINT [DF_Products_UnitPrice] DEFAULT ((0)) NULL, 
[UnitsInStock] SMALLINT  CONSTRAINT [DF_Products_UnitsInStock] DEFAULT ((0)) NULL, 
[UnitsOnOrder] SMALLINT  CONSTRAINT [DF_Products_UnitsOnOrder] DEFAULT ((0)) NULL, 
[ReorderLevel] SMALLINT  CONSTRAINT [DF_Products_ReorderLevel] DEFAULT ((0)) NULL, 
[Discontinued] BIT   CONSTRAINT [DF_Products_Discontinued] DEFAULT ((0)) NOT NULL, 
CONSTRAINT [PK_Products] PRIMARY KEY CLUSTERED ([ProductID] ASC), 
CONSTRAINT [FK_Products_Categories] FOREIGN KEY ([CategoryID]) REFERENCES [dbo].[Categories] ([CategoryID]), 
CONSTRAINT [FK_Products_Suppliers] FOREIGN KEY ([SupplierID]) REFERENCES [dbo].[Suppliers] ([SupplierID]), 
CONSTRAINT [CK_Products_UnitPrice] CHECK ([UnitPrice]>=(0)), 
CONSTRAINT [CK_ReorderLevel] CHECK ([ReorderLevel]>=(0)), 
CONSTRAINT [CK_UnitsInStock] CHECK ([UnitsInStock]>=(0)), 
CONSTRAINT [CK_UnitsOnOrder] CHECK ([UnitsOnOrder]>=(0)) 

)。

GO ノンブロッキングインデックスを作成する[カテゴリ製品] ON [dbo]。[製品]([CategoryID] ASC);

GO CREATE NONCLUSTERED INDEX [カテゴリID] ON [dbo]。[製品]([CategoryID] ASC);

GO [製品名] ON [製品]([ProductName] ASC);

GO [サプライヤID] ON [dbo]。[製品]([SupplierID] ASC);

GO 非同意インデックスを作成します[SuppliersProducts] ON [dbo]。[製品]([SupplierID] ASC);

exception

これは.aspxのです:

<asp:GridView ID="gvProducts" runat="server" AllowPaging="True" AutoGenerateColumns="False" CellPadding="4" ForeColor="#333333" GridLines="None" OnRowCancelingEdit="gvProducts_RowCancelingEdit" OnRowEditing="gvProducts_RowEditing" OnRowUpdating="gvProducts_RowUpdating"> 
     <AlternatingRowStyle BackColor="White" /> 
     <Columns> 
      <asp:BoundField DataField="ProductName" HeaderText="Производ" /> 
      <asp:BoundField DataField="UnitPrice" HeaderText="Единечна цена" /> 
      <asp:BoundField DataField="Quantity" HeaderText="Количина" /> 
      <asp:CommandField CancelText="Откажи" EditText="Уреди" ShowEditButton="True" UpdateText="Промени" /> 
     </Columns> 
     <EditRowStyle BackColor="#7C6F57" /> 
     <FooterStyle BackColor="#1C5E55" Font-Bold="True" ForeColor="White" /> 
     <HeaderStyle BackColor="#1C5E55" Font-Bold="True" ForeColor="White" /> 
     <PagerStyle BackColor="#666666" ForeColor="White" HorizontalAlign="Center" /> 
     <RowStyle BackColor="#E3EAEB" /> 
     <SelectedRowStyle BackColor="#C5BBAF" Font-Bold="True" ForeColor="#333333" /> 
     <SortedAscendingCellStyle BackColor="#F8FAFA" /> 
     <SortedAscendingHeaderStyle BackColor="#246B61" /> 
     <SortedDescendingCellStyle BackColor="#D4DFE1" /> 
     <SortedDescendingHeaderStyle BackColor="#15524A" /> 
    </asp:GridView> 
+0

'ProductName'という名前の列がありますか? – Rahul

+0

はい、Northwindデータベースにそのような列があります –

+0

Ca 'products'テーブルのスキーマを投稿していますか? – Rahul

答えて

0

あなたがデータソースのどのような種類を使用していますか?オブジェクトデータソース/ SQLデータソース?データソースの作成後にテーブル定義が変更され、データソースが更新されていないかどうかを確認してください。その場合、テーブル定義の更新された列は反映されず、このような例外が発生する可能性があります。

関連する問題