You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

DataGridView清除数据报错:无法删除行,需保留列配置

解决DataGridView清空数据但保留列(含ComboBox列)的问题

嘿,我一眼就揪出问题所在了——你不该调用gridNomiColonne.Columns.Clear()啊!这行代码会直接删掉所有列,完全违背了你“保留列设置”的需求,再加上你遇到的Cannot delete data异常,大概率是你的DataGridView绑定了数据源(比如通过BindingSource关联DataTable),直接操作Rows集合才触发了这个错误。

下面分两种场景给你正确的解决方案:

场景1:DataGridView绑定了数据源(比如BindingSource/DataTable)

如果你的DataGridView是通过数据源绑定的,绝对不要直接操作DataGridView的Rows集合,应该去清空数据源本身:

// 假设你的绑定源是bindingSource1
bindingSource1.Clear();

// 如果是直接绑定DataTable,就清空DataTable
yourDataTable.Clear();

这样操作既会清空所有行数据,又能完整保留你设置的所有列(包括那个DataGridViewComboBoxColumn的下拉选项、样式等配置)。

场景2:DataGridView未绑定数据源(手动添加列)

如果是手动添加的列,只需要清空行就够了,绝对不要碰Columns.Clear():

gridNomiColonne.Rows.Clear();
// 删掉那行Columns.Clear()的代码!

为什么会出现那个异常?

你看到的System.ArgumentException: Impossibile cancellare questo elenco(无法删除此列表)错误,是因为当DataGridView绑定数据源时,它的Rows集合其实是数据源的视图(比如DataView),直接调用Rows.Clear()会尝试修改数据源,但可能数据源存在约束(比如外键关联),或者框架要求你必须通过数据源本身来做修改,而不是直接操作DataGridView的行集合。

另外补充一句:清空行数据完全不会影响DataGridViewComboBoxColumn的下拉选项配置,只要你不修改Columns集合,这些设置都会原封不动保留下来。

内容的提问来源于stack exchange,提问作者Simone Spagna

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 07:50:59