按 VB.NET 排序货币
Sorting currency in VB.NET
我很难解决我们内部软件包中的货币分类问题。问题软件是使用VB.NET编写的,值包含在DataGridView中,相关代码是:
SQLReader.Read() Code
结果是:Value Column incorrectly sorted
该列下方还有更多示例,其中带有逗号的值似乎也未正确排序。我如何让它们排序?
我看到您的代码正在将数字货币值转换为字符串,然后在 DataGridView
中显示该字符串 - 这是您的问题:这意味着 DataGridView 将对字符串而不是数字执行字典排序排序(即 "21"
在 "123"
之后排序,因为 '2' > '1'
.
我不知道 m_DataRow
的定义是什么,但感觉就像您使用的是非类型化数据集,或者可能是粗略创建的类型化数据集,但没有任何有意义的列名称和类型。
不幸的是,因为您的 DataGridView 看起来绑定到这个 m_dataRow
对象,所以您被卡住了,除非您可以正确地重新创建它(例如,使用实际的列名称和类型)。但是,如果您使用的是无类型数据集,则只需更改代码以停止将货币值格式化为字符串,而是直接提供原始 Decimal
值,然后使用 DataGridView 自己的列格式来指定 "C"(对于货币)格式字符串。
我很难解决我们内部软件包中的货币分类问题。问题软件是使用VB.NET编写的,值包含在DataGridView中,相关代码是: SQLReader.Read() Code
结果是:Value Column incorrectly sorted
该列下方还有更多示例,其中带有逗号的值似乎也未正确排序。我如何让它们排序?
我看到您的代码正在将数字货币值转换为字符串,然后在 DataGridView
中显示该字符串 - 这是您的问题:这意味着 DataGridView 将对字符串而不是数字执行字典排序排序(即 "21"
在 "123"
之后排序,因为 '2' > '1'
.
我不知道 m_DataRow
的定义是什么,但感觉就像您使用的是非类型化数据集,或者可能是粗略创建的类型化数据集,但没有任何有意义的列名称和类型。
不幸的是,因为您的 DataGridView 看起来绑定到这个 m_dataRow
对象,所以您被卡住了,除非您可以正确地重新创建它(例如,使用实际的列名称和类型)。但是,如果您使用的是无类型数据集,则只需更改代码以停止将货币值格式化为字符串,而是直接提供原始 Decimal
值,然后使用 DataGridView 自己的列格式来指定 "C"(对于货币)格式字符串。