好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

C#实现对DataGridView的删除操作

C#实现对DataGridView的删除操作

namespace HdhCmsDeleteDataGridView

  private class HdhCmsDataGridRemove{

        private void button1_Click(object sender, EventArgs e)

        {

            // 1. 强制提交当前编辑

            dataGridView1.EndEdit();

            // 2. 获取选中的行(逆序排序)

            var rowsToDelete = dataGridView1.SelectedCells

                .Cast<DataGridViewCell>()

                .Select(cell => cell.OwningRow)

                .Distinct()

                .Where(row => !row.IsNewRow) // 过滤新行

                .OrderByDescending(row => row.Index)

                .ToList();

            // 3. 操作 DataTable 删除数据

            if (dataGridView1.DataSource is DataTable dataTable)

            {

                foreach (DataGridViewRow row in rowsToDelete)

                {

                    if (row.DataBoundItem is DataRowView rowView)

                    {

                        DataRow dataRow = rowView.Row;

                        // 如果是新增但未提交的行,拒绝更改

                        if (dataRow.RowState == DataRowState.Added)

                        {

                            dataRow.RejectChanges(); // 直接丢弃新增行

                        }

                        else

                        {

                            dataTable.Rows.Remove(dataRow); // 正常删除已提交的行

                        }

                    }

                }

                //显示DataGridView与DataTable的数据是否一致,实际运用时可以隐藏

                MessageBox.Show(dataGridView1.Rows.Count + "==" + dataTable.Rows.Count);

            }

            // 4. 刷新界面绑定(可选)

            dataGridView1.Refresh();

        }

  }

}


查看更多关于C#实现对DataGridView的删除操作的详细内容...

  阅读:34次