【发布时间】:2011-01-28 12:45:26
【问题描述】:
我有一个从 SQL Server 数据库中的表填充的 DataGridView。其中一列是price。
DGV 中的列类型自动设置为十进制。
在某些情况下,我需要在此列的单元格中写入“无”等文本,而不是价格。
我该怎么做?
DGV.Item("price", 0).Value = "none"
不起作用,因为单元格的十进制类型。
【问题讨论】:
标签: vb.net winforms datagridview
我有一个从 SQL Server 数据库中的表填充的 DataGridView。其中一列是price。
DGV 中的列类型自动设置为十进制。
在某些情况下,我需要在此列的单元格中写入“无”等文本,而不是价格。
我该怎么做?
DGV.Item("price", 0).Value = "none"
不起作用,因为单元格的十进制类型。
【问题讨论】:
标签: vb.net winforms datagridview
代替所有这些,使用数据列表达式属性。
如果您只想更改数据的显示方式(这就是您想要的),请挂钩 CellFormatting 事件。这是总体思路(代码未经测试):
private void dgv_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)
{
if (some_condition(e.ColumnIndex, e.RowIndex)) {
e.Value = "none";
e.FormattingApplied = true;
}
}
【讨论】:
看看实现 IFormatProvider 和 ICustomFormatter...
然后在 DGV 中,您可以通过 ColumnFormatProvider 将其分配给列格式。
【讨论】: