获取DataGridView中显示的字符串

时间:2016-09-27 09:07:43

标签: .net vb.net datagridview

我有一个使用DataTable作为数据源的DataGridView。

我需要得到(作为字符串数组)DataGridView中显示的具有相同格式的值。

因此,在DataTable中有一个值为" 100"的字段。在DGV中显示为"€100,00"。我需要得到"€100,00"作为字符串

另一个字段是双字节,其值为" 31.506849315068493150684931507"在DGV中显示为"€31,51"。我需要得到"€31,51"作为字符串

DataTable包含各种类型的字段(字符串,日期,双精度),对于所有字段,我需要获取一个字符串,如DGV所示。

我已尝试使用以下代码,但我获得了DataTable的值。

For x As Integer = 0 To Me.DGV_IntCalc.RowCount - 1
    Dim RowStrList As New List(Of String)
    For Each Col As String In MaxColLen.Keys
        RowStrList.Add(Me.DGV_IntCalc.Item(Col, x).Value.ToString)
    Next
    Calc_Summay &= String.Format(F_Str, RowStrList.ToArray) & vbCrLf
Next

F_Str是一个字符串,其列格式类似于" {0,10} {1,20}"

EDIT2:

我也尝试过:

RowStrList.Add(Format(Me.DGV_IntCalc.Item(Col, x).Value, _
               Me.DGV_IntCalc.Columns(Col).DefaultCellStyle.Format))

但它没有给出预期的结果。我也尝试过:

Dim Str$ = Me.DGV_IntCalc.Item(Col, x).Value.ToString
Dim Frmt$ = Me.DGV_IntCalc.Columns(Col).DefaultCellStyle.Format
Dim FormattedStr$ = Format(Str, Frmt)

Dim FormattedStr$ = String.Format(Str, Frmt)

但我得到DataTable(未格式化)

中的值

1 个答案:

答案 0 :(得分:2)

DGV提供包含格式的数据视图。在某处您告诉它将该列格式化为货币。也许是这样的:

dgv1.Columns(3).DefaultCellStyle.Format = "C2"

要获取这些格式化的值,请使用FormattedValue属性:

For n As Int32 = 0 To dgv1.Rows.Count - 1
    Console.WriteLine(dgv1.Item(n, 3).FormattedValue)
Next

另请注意,在您的代码中,您在If

中声明了您的列表
For x As Integer = 0 To Me.DGV_IntCalc.RowCount - 1
    Dim RowStrList As New List(Of String)
    For Each Col As String In MaxColLen.Keys
        RowStrList.Add(Me.DGV_IntCalc.Item(Col, x).Value.ToString)
    Next
    Calc_Summay &= String.Format(F_Str, RowStrList.ToArray) & vbCrLf
Next

由于在RowStrList块内声明If,因此它只存在于那里。导致缩进的所有内容也会创建一个新的块范围。有关详细信息,请参阅:Reference variables and objects elsewhere