0

次のコードでは、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);
4

1 に答える 1

1

DataTableから行を削除するのではなく、削除します。

DataRowのDataRowStateをに変更する必要がありdeletedます。そうすると、DataAdapterはデータソースでそれを削除する必要があることを認識します。

以下はそれを削除します:

customers.Rows(rowIndex).delete();//now DataRow's DataRowState is Deleted
adapter.Update(customers);        // now it's actually deleted

詳細情報:MSDN方法:DataTableの行を削除する

ちなみに、気が変わった場合は、次のようにするとDataRowが削除されなくなります。

customers.Rows(rowIndex).RejectChanges();

RowStateはに戻りUnchangedます。これは、DataRowまたはDataTable全体のいずれかで機能します。

于 2011-10-04T21:32:06.517 に答える