【问题标题】:Substitute value with value label in DGV用 DGV 中的值标签替换值
【发布时间】:2013-11-04 15:22:01
【问题描述】:

初始位置: 我已经将一个类型化的数据集(填充了来自 sql 查询的数据)绑定到了 DGV。 DGV 条目不是为了阅读而编辑的。 DGV 有 12 行(月)。

问题: 现在我试图显示月份名称而不是数字,你可以说我想标记值(1 = 一月,2 = 二月等),但不知道该怎么做。

我尝试了什么: 我的想法是创建和使用一个未绑定的表(值;月份名称),但我找不到可以执行我想要的列类型(DGV -> 编辑列)。

编辑: 您好,不,这与标题无关。我给你举个例子。

ATM 的样子:

1|true|
2|false|
3|false|

... 我的目标是:

January|true|
Feburary|false|
March|false|

【问题讨论】:

  • 如果您在谈论标题:dgv.columns(n).HeaderText 将允许您更改它
  • 嗨。不,这与标题无关。我编辑了我的帖子给你一个例子。
  • DateSet 支持 DataRelation social.msdn.microsoft.com/Search/…

标签: .net vb.net datagridview dataset


【解决方案1】:

也许您可以尝试“CellFormating”事件。在 web 中这很简单,因为在每行数据绑定后都会引发一个事件,但不幸的是在 windows 形式中没有。

我建议您直接在 CellFormating 事件中更改月份的值,如下所示:

Private Sub DataGridView1_CellFormatting(sender As Object, e As System.Windows.Forms.DataGridViewCellFormattingEventArgs) Handles DataGridView1.CellFormatting
    If e.Value IsNot Nothing AndAlso IsNumeric(e.Value) Then
        e.Value = System.Globalization.CultureInfo.CurrentCulture.DateTimeFormat.GetMonthName(e.Value)
    End If
End Sub

我刚刚测试了这段代码并且运行良好。

【讨论】:

  • 太棒了!这是处理它的好方法。由于我的值在第 1 列中,我只需要设置环境: If e.ColumnIndex() = 1 Then ... End If 并且一切正常!
猜你喜欢
  • 2016-01-11
  • 2018-01-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-11-09
  • 1970-01-01
  • 1970-01-01
  • 2015-05-01
相关资源
最近更新 更多