[英]Delete multiple rows in datagridview
我有一個功能可以在 datagridview 中右鍵單擊刪除刪除單行..
代碼:
private void dataGridView1_MouseDown(object sender, MouseEventArgs e)
{
if (e.Button == MouseButtons.Right)
{
var hti = dataGridView1.HitTest(e.X, e.Y);
if (hti.RowIndex != -1)
{
dataGridView1.ClearSelection();
dataGridView1.Rows[hti.RowIndex].Selected = true;
}
}
}
private void DeleteRow_Click(object sender, EventArgs e)
{
Int32 rowToDelete = dataGridView1.Rows.GetFirstRow(DataGridViewElementStates.Selected);
if (rowToDelete != -1)
{
dataGridView1.Rows.RemoveAt(rowToDelete);
dataGridView1.ClearSelection();
}
}
但現在我想在選擇時刪除多行。
首先我不知道為什么我不能選擇多行。
其次,我想使用刪除按鈕並右鍵單擊鼠標刪除來刪除多個刪除。
有人能幫我嗎?
編輯:看看你的代碼。 您正在根據HitTest
方法的結果設置所選行。 DataGridView
屬性SelectedRows
將確定選擇了哪些行。 不確定為什么需要執行HitTest
,但也許您還沒有完全解釋所需的功能。
if (e.Button == MouseButtons.Right)
{
var hti = dataGridView1.HitTest(e.X, e.Y);
if (hti.RowIndex != -1)
{
dataGridView1.ClearSelection();
dataGridView1.Rows[hti.RowIndex].Selected = true;
}
}
確保數據網格上的MultiSelect
屬性設置為true
。
然后,您可以在您選擇的情況下使用SelectedRows
屬性:
foreach (DataGridViewRow row in DataGridView1.SelectedRows)
{
DataGridView1.Rows.Remove(row);
}
請注意以下情況:
如果需要刪除datagrid中的記錄,不要只將rowIndex存儲在datagrid中,(而是應該將相應的鍵存儲在DB中):
例如:我想刪除數據網格中的第 1 行和第 2 行,我將它們的 rowIndex 存儲在數據網格中。 在datagrid中刪除第1行后,第2行的數據會上移到第1行,第3行的數據會上移到第2行,因為你是用datagrid的rowIndex來定位要刪除的數據,所以,結果:data1 data3 最終會被刪除。
foreach (DataGridViewRow row in dgShow.SelectedRows)
{
string id = row.Cells[4].Value.ToString();
int x = Convert.ToInt16(id);
var del = context.ServicesPrice.Where(current => current.Id == x).FirstOrDefault();
context.ServicesPrice.Remove(del);
}
你可以寫而不是 cell[4]: columns id 在你的數據庫中。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.