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

C# WinForm中给ObjectListView赋值动态DataSource前如何删除列

错误原因

ErrorEncountered : PreviouslyRenderedMyColumn is neither a DataColumn nor a DataRelation for table

该异常由BrightIdeasSoftware的DataListView的列缓存机制导致:控件会保留上一次绑定数据源时生成的列映射规则,当新绑定的DataTable结构和之前不一致(缺少旧表中的某列)时,控件仍然会尝试用旧列名去新表中取数据,匹配失败就触发该异常。

修复步骤
  • 每次绑定新的动态DataTable前,先清空控件已有列和绑定缓存
// 清空所有已生成的OLV列
dataListView1.Clear();
// 清空旧数据源绑定
dataListView1.DataSource = null;
  • 确认自动生成列开关已开启(如果需要控件根据表结构自动生成列)
dataListView1.AutoGenerateColumns = true;
  • 赋值新的DataTable数据源
// yourDynamicDataTable为你动态生成的新数据表对象
dataListView1.DataSource = yourDynamicDataTable;
特殊场景适配

如果你不需要自动生成列,需要自定义列展示规则:
清空旧列后,手动添加和新DataTable列名完全匹配的OLVColumn对象,再绑定数据源即可,示例如下:

dataListView1.Clear();
dataListView1.DataSource = null;
// 手动添加和新表列对应的自定义列
OLVColumn customCol = new OLVColumn("列展示名", "新DataTable对应的列名");
dataListView1.Columns.Add(customCol);
// 关闭自动生成列
dataListView1.AutoGenerateColumns = false;
// 绑定数据源
dataListView1.DataSource = yourDynamicDataTable;

内容的提问来源于stack exchange,提问作者Amol Chougule

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 11:45:02