DataGridView无法清空问题:切换数据源时残留列如何解决?
嘿,我懂你遇到的这个小麻烦了——你想彻底清空DataGridView的内容和列,但现在旧列还顽固地留在那儿,对吧?
问题出在你当前的代码只处理了数据源和数据绑定,却没碰DataGridView的列集合(Columns)。不管这些列是自动生成的还是手动添加的,当你把DataSource设为Nothing时,它们并不会自动消失,这就是为什么你还能看到空列的原因。
给你两种针对性的解决方案,看你需求选:
1. 彻底清空所有内容(包括列和数据)
如果你想完全重置DataGridView,下次绑定新数据源时重新生成列,用这段代码:
' 断开数据源连接 dbTableGrid.DataSource = Nothing ' 清空所有列 dbTableGrid.Columns.Clear() ' 清除数据绑定(这一步可选,但加上更稳妥) dbTableGrid.DataBindings.Clear() ' 刷新控件生效 dbTableGrid.Refresh()
注意:如果之后需要自动生成列,确保dbTableGrid.AutoGenerateColumns = True(默认就是这个值,除非你手动改过),这样绑定新数据源时会自动创建对应列。
2. 只清空数据,保留列结构
要是你想留着列的结构,只清除里面的数据,那不用清空Columns集合,直接这样做就行:
' 如果绑定的是DataTable,直接清空表数据 If TypeOf dbTableGrid.DataSource Is DataTable Then CType(dbTableGrid.DataSource, DataTable).Clear() Else ' 通用方式断开数据源 dbTableGrid.DataSource = Nothing End If dbTableGrid.Refresh()
这样就能解决你现在遇到的问题啦~
内容的提问来源于stack exchange,提问作者Mardus Davel
相关产品推荐
相关产品推荐

