Vb.net 在System.Data.DataTable中显示货币

Vb.net 在System.Data.DataTable中显示货币,vb.net,system.data.datatable,Vb.net,System.data.datatable,我正在编写一些旧的VB代码,它创建了一个System.Data.DataTable,并定义了一些列。它工作正常,只是我需要一个特定的列显示为货币,而不仅仅是一个浮点数。我该怎么做 Dim myDataTable As New System.Data.DataTable("tblRec") myDataTable.Columns.Add("RECAMOUNT", System.Type.GetType("System.Double")) Protected WithEvents DataGrid

我正在编写一些旧的VB代码,它创建了一个
System.Data.DataTable
,并定义了一些列。它工作正常,只是我需要一个特定的列显示为货币,而不仅仅是一个浮点数。我该怎么做

Dim myDataTable As New System.Data.DataTable("tblRec")
myDataTable.Columns.Add("RECAMOUNT", System.Type.GetType("System.Double"))

Protected WithEvents DataGridCurrentCRLines As Global.System.Web.UI.WebControls.DataGrid
Session("CRLines") = myDataTable
DataGridCurrentCRLines.DataSource = Session("CRLines")
将行更改为:

myDataTable.Columns.Add("RECAMOUNT", System.Type.GetType("System.Decimal"))

没有区别,我的意思是显示1234567.89,而不是1234567.89。Time Schmelter的提示指向正确的方向。
首先将类型更改为字符串:

myDataTable.Columns.Add("RECAMOUNT", System.Type.GetType("System.String")
然后我编写了一个助手方法来将字符串转换为货币字符串,似乎不能直接从字符串转换为货币字符串,而是必须转换为字符串->十进制->货币字符串

 Private Function ConvertStringToCurrencyString(ByVal inputString As String) As String

        Dim currencyString As String
        currencyString = ""
        Dim myDecimal As Decimal

        Try

            myDecimal = System.Convert.ToDecimal(inputString)
            currencyString = myDecimal.ToString("C2")

        Catch exception As System.OverflowException
            System.Console.WriteLine("ConvertStringToCurrencyString(): Overflow in string-to-decimal conversion.")
        Catch exception As System.FormatException
            System.Console.WriteLine("ConvertStringToCurrencyString(): The string is not formatted as a decimal.")
        Catch exception As System.ArgumentException
            System.Console.WriteLine("ConvertStringToCurrencyString(): The string is null.")
        End Try

        Return currencyString

    End Function

使用十进制表示货币值会混淆存储和显示。如果将数字转换为字符串,则可以根据需要设置其格式。因此,显示它的不是DataTable,而是DataGrid。您可以使用BoundField的DataFormatString属性。我的评论是关于用于表示货币值的正确数据类型,而不是关于值的显示方式@TimSchmelter已经给了你关于这个问题的正确提示。