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

为DataGridViewTextBoxColumn赋值字符串时触发Int32错误

问题原因与解决方案

问题根源

你看到的DataGridViewTextBoxColumn只是控件的显示类型,但底层绑定的数据源字段类型是Int32。哪怕控件是文本列,只要数据源对应字段是整数类型,直接赋值带格式的字符串($57,834)就会触发类型不匹配错误——数据源期望接收整数,而不是格式化后的字符串。

解决方案

方案1:分离数据存储与显示(推荐)

保持数据源存原始的Int32数值,通过列的样式设置自动格式化显示:

' 在初始化DataGridView时设置列的显示格式
dgvExpSubject.Columns("Amt").DefaultCellStyle.Format = AG.MASK_DOLLARS
' 直接赋值原始数值即可,控件会自动格式化显示
For Each dgr As DataGridViewRow In dgvExpSubject.Rows
    dgr.Cells("Amt").Value = amt
Next

这种方式既符合数据存储规范,又能正确显示带格式的美元字符串。

方案2:修改列的ValueType与数据源类型

如果必须存储或赋值字符串格式的金额,需要确保:

  • 把DataGridView列的ValueType改为String:
    dgvExpSubject.Columns("Amt").ValueType = GetType(String)
    
  • 若绑定的是DataTable,同步修改对应列的DataType:
    ' 假设数据源是DataTable dt
    dt.Columns("Amt").DataType = GetType(String)
    

之后再赋值格式化后的字符串就不会报错了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 00:34:53