簡體   English   中英

刪除datagridview中的多行

[英]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.

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