填充DataGridView列,使用Double强制为2个小数位,使用Sort

时间:2015-05-14 16:21:30

标签: vb.net sorting datagridview formatting

很抱歉这个奇怪的标题,但我不知道如何更好地说出来。

我正在尝试使用包含2个小数位的数字填充DataGridView上的列。

为此,我正在使用

Dim _Size as Double = 1.2345
DataGridView1.Item(0, 0).Value = Format(_Size, "0.00")

这会正确填充数据,但在按此列排序时,会将该项视为字符串。

我在网上发现,如果你将输入的数据转换为数字类型(double,integer等...),它会将它排序为数字而不是字符串。 这种方法非常出色,但任何带有2位小数(即1.00)的整数值都会更改为0位小数。

所以,如果我有以下值

1.2345
2.2345
3.2345
4.2345
5.0011

然后我格式化为2位小数,然后它们将成为

1.23
2.23
3.23
4.23
5.00

如果我然后将它们转换回双打,那么它们就会成为

1.23
2.23
3.23
4.23
5

是否有任何方法可以使用格式化为2位小数的这些值填充DataGridView,但保留double类型以便列正确排序?

我希望我已经清楚地解释了这一点。

非常感谢任何帮助

1 个答案:

答案 0 :(得分:2)

您使用旧版VB格式函数值转换为字符串:

Function Format(Expression As Object, Optional Style As String = "") As String

转换后,其他小数将丢失。使用该列Format的{​​{1}}属性指定所需的小数位数({1}}为2位小数。与VB' DefaultCellStyle不同,这就像一个" DisplayAs"不改变值或改变类型。

  • 在“属性”窗格中,选择N2以启动列编辑器
  • 选择专栏
  • 点击Format媒体资源
  • 对于Columns,请点击DefaultCellStyle按钮从列表中进行选择。 Format...会产生Numeric

如果在该列中存储数值,则只显示2个小数位,但实际/原始值仍然可用,排序将使用数值而不是文本排序。