在以下代码中,UPDATE正在运行,但DELETE无效。当我删除它时删除它并且GridView1不显示它但数据库仍然有它。 customers
有PrimaryKey
。
using (SqlConnection connection = new SqlConnection(conString))
{
SqlDataAdapter adapter = new SqlDataAdapter();
adapter.SelectCommand = new SqlCommand("select * from customers", connection);
SqlCommandBuilder builder = new SqlCommandBuilder(adapter);
connection.Open();
DataTable customers = new DataTable();
adapter.Fill(customers);
// code to modify data in DataTable here
customers.Rows.RemoveAt(rowIndex);
GridView1.EditIndex = -1;
GridView1.DataSource = customers;
GridView1.DataBind();
adapter.Update(customers);
答案 0 :(得分:1)
您不想从DataTable中删除该行,而是delete它。
DataRow的DataRowState必须修改为deleted
,然后DataAdapter知道它必须在数据源中删除它。
以下将删除它:
customers.Rows(rowIndex).delete();//now DataRow's DataRowState is Deleted
adapter.Update(customers); // now it's actually deleted
更多信息:MSDN How to: Delete Rows in a DataTable
顺便说一下,如果你改变主意,以下会阻止DataRow被删除:
customers.Rows(rowIndex).RejectChanges();
RowState将更改回Unchanged
。
这适用于DataRow或whole DataTable。