2014-01-11 71 views
0

首先我用下面的填充DataGridViewdatagridview的不显示货币格式

 dta = New OleDbDataAdapter("Select * From [" & ActName & "$B6:E" & LastEntryRow & "]", cn) 
     dts = New DataSet 
     dta.Fill(dts, "Detailtable") 
     DataGridView1.DataSource = dts 
     DataGridView1.DataMember = "Detailtable" 

我随后被格式化,其中包括以下代码的DataGridView:

Dim currencyCellStyle As New DataGridViewCellStyle 
    currencyCellStyle.Format = "C2" 

    With Me.DataGridView 
     .Columns(1).DefaultCellStyle = currencyCellStyle 
     .Columns(2).DefaultCellStyle = currencyCellStyle 
    End with 

这行之有效。列显示值为$ 1234.00。 将新值添加到列后立即显示为$ 1234.00。 (工作至今)

如果一列没有被做了数据集时的任何值,没有值显示在DataGridView该列。 (目前没有问题)

但是,所有添加到空白列的新值显示为1234.00。不是$ 1234.00。

我已经尝试刷新DataGridView 我更改单元格后重新格式化了DataGridView。 它仍然显示为1234.00。

如果我保存更改,重新创建DataSet和重新填充的DataGridView一切正常。

我需要在DataGridView以反映新的当值被直接添加到列的正确格式($ 1234.00)?????

+1

如果将线:Me.DataGridView1.Columns(1).DefaultCellStyle.Format =“C2”后立即绑定和列是数字,它的工作原理。请参阅:http://msdn.microsoft.com/en-us/library/vstudio/f9x2790s%28v=vs.100%29.aspx?cs-save-lang = 1&cs-lang = vb#code-snippet-5 – NoChance

+0

我已经加入的结合的结合后立即以下:DataGridView1.Columns(1).ValueType = System.Type.GetType( “System.Decimal”) DataGridView1.Columns(2).ValueType = System.Type.GetType(“系统.Decimal“) DataGridView1.Columns(1).DefaultCellStyle.Format = ”C2“ DataGridView1.Columns(2).DefaultCellStyle.Format = ”C2“。将值添加到空白列时仍然显示值为1234.00而不是$ 1234.00。 – user3184880

+1

这可能是因为数据表中的列类型不是数字。检查datacolumn数据类型。 – NoChance

回答

0

如果您使用此行

DataGridView1.Columns(1).DefaultCellStyle.Format = "C2" 

它必须是工作,但如果你的数据库字段的格式是不是小数(但TEXT),这种类型的格式它永远不会工作。