为什么SQLCommandBuilder没有删除?

时间:2011-10-04 21:19:43

标签: asp.net sqldataadapter sqlcommandbuilder

在以下代码中,UPDATE正在运行,但DELETE无效。当我删除它时删除它并且GridView1不显示它但数据库仍然有它。 customersPrimaryKey

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);

1 个答案:

答案 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。 这适用于DataRowwhole DataTable