我有一個C#函數和SQL服務器存儲過程它的刪除行在我的gridview。我怎樣才能讓它刪除多個選定的行?我如何使這個功能刪除多行
C#功能:
public void DeleteReciver(int Reciver_number)
{
DAL.DataAccessLayer DAL = new DAL.DataAccessLayer();
DAL.Open();
SqlParameter[] param = new SqlParameter[1];
param[0] = new SqlParameter("@Reciver_number", SqlDbType.Int);
param[0].Value = Reciver_number;
DAL.excutecommand("DeleteReciver", param);
DAL.close();
}
SQLSERVER存儲過程:使用
if (MessageBox.Show("Are you sure you want delete this reciver? ", "delete row", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
{
REC.DeleteReciver(Convert.ToInt32(this.dataGridView1.CurrentRow.Cells[2].Value));
MessageBox.Show("Reciver deleted successfully", "delete row", MessageBoxButtons.OK, MessageBoxIcon.Information);
this.dataGridView1.DataSource = REC.GET_ALL_RECIVERS();
}
else
{
MessageBox.Show("cancelled", "delete row", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
}
您可以更改'DeleteReciver'的簽名以接受'List'作爲參數,然後在該方法中,在for/foreach循環中打開連接後,調用存儲過程以傳遞值來刪除。 –
也作爲另一種選擇,您可以使用[Table-Valued參數](https://msdn.microsoft.com/en-us/library/bb510489.aspx)。例如,看看這篇文章:[C#SQL Server - 將列表傳遞給存儲過程](http://stackoverflow.com/questions/7097079/c-sharp-sql-server-passing-a-list-to -a-stored-procedure) –
如果DataGridView的'DataSource'是'DataTable',則可以使用'DataAdapter'來保存對數據庫的更改。這樣你就不需要使用該存儲過程。有足夠的'SELECT * FROM Recivers'命令。然後可以自動創建所有其他必需的命令,並且所有更改(包括刪除的記錄)都可以簡單地應用於數據庫例如,看看這篇文章:[使用DataGridView,DataTable和TableAdapter的CRUD操作](http://stackoverflow.com/a/36274706/3110834) –