簡體   English   中英

使用en每一行中的按鈕從datagridview中刪除行

[英]Delete Row from datagridview using button en each row

我每行都有一個顯示刪除按鈕,用於從數據庫中永久刪除,如何從DB中刪除數據?

以下代碼顯示了每行的刪除按鈕。 我有用戶Oracle數據庫在哪里可以寫刪除查詢?

DataGridViewLinkColumn Deletelink = new DataGridViewLinkColumn();
Deletelink.UseColumnTextForLinkValue = true;
Deletelink.HeaderText = "delete";
Deletelink.DataPropertyName = "lnkColumn";
Deletelink.LinkBehavior = LinkBehavior.SystemDefault;
Deletelink.Text = "Delete";
dataGridView1.Columns.Add(Deletelink);

我已經寫了刪除代碼,但是失敗了

private void dataGridView1_CellContentClick(object sender DataGridViewCellEventArgs e)
{
  if (e.ColumnIndex == 5)
  {
    empid = Convert.ToString(dataGridView1.Rows[e.RowIndex].Cells["empid"].Value);
    OleDbDataAdapter adp = new OleDbDataAdapter("delete  from apps where appsid= '"+empid+"'", con);
    DataTable dt = new DataTable();
    adp.Fill(dt);
    dataGridView1.DataSource = dt;
    dataGridView1.Refresh();

作為OleDbDataAdapter的構造函數發出的刪除命令不正確。 但是,適配器仍將執行命令。 但是可以肯定,您不能期望使用delete命令來填充數據表。
您仍然需要一個SELECT。

通常,這是通過從網格中刪除行來完成的(這會將基礎行標記為已刪除,然后,當您要將更改保存到數據庫時,應使用原始的DataAdapter和原始的DataTable最初用於填充網格以發出網格。 更新方式

使用OleDbDataAdapter更新數據表的方法對此進行了很好的解釋。

或者您可以使用單獨的命令自己更新並重新加載數據表

// Delete the record on the db
empid = Convert.ToString(dataGridView1.Rows[e.RowIndex].Cells["empid"].Value);
OleDbCommand cmd = new OleDbCommand("delete from apps where appsid= @id", con);
cmd.Parameters.Add("@id", OleDbType.VarWChar).Value = empid;
cmd.ExecuteNonQuery();

// reload the grid with the updated info from the db
OleDbDataAdapter da = new OleDbDataAdapter("Select * from apps", con);
DataTable dt = new DataTable();
da.Fill(dt);
dataGridView1.DataSource = dt;
dataGridView1.Refresh();

當然,這樣做的缺點是要兩次訪問數據庫並在每次刪除一行時重新加載所有內容。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM