DataGridView-Spalte formatieren

13/11/2007 - 18:08 von Stefan Donath | Report spam
Hallo,

ich binde ein DataGridView an ein DataView. In einer Spalte stehen
Kilometerangaben, die i.d.R. metergenau sind, d.h. 3 Nachkommastellen
haben. Wenn der Wert aber z.B. 0,5 ist, wird er auch als 0,5 angezeigt
Soweit logisch. Aber wie erreiche ich eine Anzeige des Wertes als 0,500?

Danke für Tipps!

Gruß - Stefan.
 

Lesen sie die antworten

#1 Peter Götz
13/11/2007 - 18:54 | Warnen spam
Hallo Stefan,

ich binde ein DataGridView an ein DataView.
In einer Spalte stehen Kilometerangaben, die
i.d.R. metergenau sind, d.h. 3 Nachkommastellen
haben. Wenn der Wert aber z.B. 0,5 ist, wird er
auch als 0,5 angezeigt
Soweit logisch. Aber wie erreiche ich eine
Anzeige des Wertes als 0,500?



Dafür gibt es das CellFormatting-Ereignis beim
DataGridView.

Kleines Beispiel:

' /// Code in einer leeren Form1
Public Class Form1
Private mDT As DataTable
Private mDV As DataView
Private mCM As CurrencyManager
Private WithEvents DGV As DataGridView
Private WithEvents CBox As CheckBox

Private Sub Form1_Load _
(ByVal sender As System.Object, _
ByVal e As System.EventArgs _
) Handles MyBase.Load

CreateData()
CBox = New CheckBox
With CBox
.SetBounds(10, 10, 150, 30)
.Name = "CBox"
.Checked = True
.Text = "Wert formatiert"
End With
Me.Controls.Add(CBox)

DGV = New DataGridView
With DGV
.SetBounds _
(10, 50, _
Me.ClientSize.Width - 20, _
Me.ClientSize.Height - 60)

.Name = "DGV"
.Anchor = AnchorStyles.Left Or _
AnchorStyles.Top Or _
AnchorStyles.Right Or _
AnchorStyles.Bottom

.DataSource = mDV
End With
Me.Controls.Add(DGV)
DGV.AutoResizeColumns()
End Sub

Private Sub CreateData()
Dim i As Integer
Dim DR As DataRow
Dim R As New Random

mDT = New DataTable
With mDT
.Columns.Add("ID", GetType(Int32))
.Columns.Add("Text", GetType(String))
.Columns.Add("Wert", GetType(Double))

For i = 1 To 12
DR = .NewRow
DR.Item(0) = i
DR.Item(1) = MonthName(i)
DR.Item(2) = i + R.NextDouble
.Rows.Add(DR)
Next
.AcceptChanges()
End With

mDV = New DataView(mDT)
mCM = _
DirectCast(Me.BindingContext(mDV), CurrencyManager)
End Sub

Private Sub DGV_CellFormatting _
(ByVal sender As Object, _
ByVal e As DataGridViewCellFormattingEventArgs _
) Handles DGV.CellFormatting

If CBox.Checked Then
If e.ColumnIndex = 2 Then
e.Value = Format(e.Value, "0.0000")
e.FormattingApplied = True
End If
End If
End Sub

Private Sub CBox_CheckedChanged _
(ByVal sender As Object, _
ByVal e As System.EventArgs _
) Handles CBox.CheckedChanged

If DGV IsNot Nothing Then
DGV.Refresh()

DGV.AutoResizeColumns()
End If
End Sub
End Class
' \\\ E N T E


Danke für Tipps!



Bitteschön!

Gruß aus St.Georgen
Peter Götz
www.gssg.de (mit VB-Tipps u. Beispielprogrammen)

Ähnliche fragen