gridview에서 행을 업데이트하려고하는데 다음과 같은 오류가 발생합니다. '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 비공유 색인 만들기 [CategoriesProducts] ON [dbo]. [제품] ([CategoryID] ASC);
GO [범주 ID] ON [제품] ([CategoryID] ASC);
GO NONCLUSTERED INDEX [제품명] [DBO]를 ON [상품] ([제품명] ASC)을 만들.;
GO 비 클러스터형 인덱스 [SupplierID] ON [제품] ([공급 업체 ID] ASC);
GO 비 클러스터형 인덱스 생성 [SuppliersProducts] ON [dbo]. [제품] ([SupplierID] ASC);
이<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>
'ProductName'이라는 열이 있습니까? – Rahul
예, Northwind 데이터베이스에 그러한 열이 있습니다 –
Ca'products' 테이블에 대한 스키마를 게시 하시겠습니까? – Rahul