2011-10-04 4 views
0

다음 코드에서 UPDATE는 작동하지만 DELETE가 작동하지 않습니다. 행을 삭제하면 삭제되고 GridView1에는 표시되지 않지만 데이터베이스에는 여전히 삭제됩니다. customersPrimaryKey입니다.SQLCommandBuider가 삭제되지 않는 이유는 무엇입니까?

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

DataTable에서 행을 제거하지 않고 delete 행을 제거하려고합니다.

DataRow의 DataRowStatedeleted으로 수정해야하며 DataAdapter는 데이터 소스에서 데이터를 삭제해야한다는 것을 알고 있습니다.

customers.Rows(rowIndex).RejectChanges(); 
:

삭제합니다 다음은

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를 방지 할 다음은, 삭제할

RowState가 Unchanged으로 다시 변경됩니다. DataRow 또는 whole DataTable에 대해 작동합니다.

+0

코드 스 니펫 및 링크를 제공해 주셔서 감사합니다. – jams