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

C#中DataGridView图片列更新异常求助:绑定DataTable后图片未切换

DataGridView Image Not Updating When Bound to DataTable

我来帮你搞定这个图片无法正常更新的问题~核心问题出在你修改的是DataGridView的单元格对象,但控件是绑定到DataTable的,它会优先从数据源(DataTable的行数据)读取内容,所以你的单元格替换操作被数据源覆盖了。

问题原因分析

当DataGridView和DataTable绑定后,UI的显示完全依赖于数据源。你原来的代码先给DataTable的行赋值了Properties.Resources.database,之后试图替换DataGridView的单元格,但绑定机制会让控件始终从DataTable同步数据,刷新后自然还是显示原来的图片。而且直接创建新的DataGridViewImageCell替换原有单元格的方式,在绑定场景下并不是正确的操作路径。

正确解决方案(推荐)

直接修改DataTable对应行的Status列值,绑定的DataGridView会自动同步更新UI,不需要手动调用Refresh():

// 获取DataTable里的目标行(这里是第一行)
DataRow targetRow = dtStores.Rows[0];
// 直接修改数据源里的图片值
targetRow["Status"] = Properties.Resources.completed;
// 不需要额外Refresh,DataTable的变更会自动通知DataGridView更新

备选方案(不推荐绑定场景使用)

如果你一定要通过操作DataGridView单元格来实现,需要先取消该单元格的数据源绑定,再设置值:

DataGridViewRow dGRVStore = dataGridView1.Rows[0];
// 取消单元格与数据源的绑定关联
dGRVStore.Cells["Status"].OwningColumn.DataPropertyName = "";
// 设置新的图片值
dGRVStore.Cells["Status"].Value = Properties.Resources.completed;
// 手动刷新控件
dataGridView1.Refresh();

这个备选方案不够可靠,因为后续如果数据源有变更,该单元格不会再同步更新,所以优先推荐直接修改DataTable的方式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.08 23:12:55