Datagridview in VS2008

09/11/2008 - 12:48 von Alberto Luca | Report spam
Hallo NewsGroup,

das Datagridview-Control in VS2005 ist ja schon um einiges besser als in
VS2003 (Datagrid), aber m.E. immer noch nicht der Hit.
So fehlt z.B. die Möglichkeit, Zeilennummern anzuzeigen.
Und eigene Usercontrols möchte ich nicht machen, da ich mich absolut am
Standard bewegen möchte und hoffe, in neueren Versionen sind dann meine
Wünsche befriedigt.
(Hauptgrund vermutlich jedoch: mangelndes Wissen ;-))

Was kann nun das Datagridview-Control in VS2008?
- ZeilenNummern
- Export auf Excel-Datei

Ist ein Umstieg von VS2005 auf VS2008 zu empfehlen?
(derzeitiger Bedarf eigentlich nur wegen Grid-Control)

Besten Dank vorab!
Ciao, Alberto
 

Lesen sie die antworten

#1 Peter Götz
09/11/2008 - 14:17 | Warnen spam
Hallo Alberto

das Datagridview-Control in VS2005 ist ja schon um
einiges besser als in VS2003 (Datagrid),



Kommt darauf an, was Du damit machen willst.
In "besser" oder "schlechter" würde ich diese Grids
nicht unterteilen. Sie sind halt recht verschieden und
eignen sich deshalb eben auch für unterschiedliche
Anforderungen. So kann z.B. das alte DataGrid
Daten hierarchisch darstellen, was das neuere
DataGridView nicht kann. Wird eine solche
Darstellungsweise nicht benötigt, ist sicher das
DataGridView einfacher zu handhaben.

aber m.E. immer noch nicht der Hit.



Das DataGridView ist, mal abgesehen von der nicht
vorgesehenen hierarchischen Darstellungsmöglichkeit,
schon enorm vielseitig, was man ihm auf den ersten
Blick vielleicht nicht ansieht.

So fehlt z.B. die Möglichkeit, Zeilennummern anzuzeigen.



Die fehlt keineswegs.

Und eigene Usercontrols möchte ich nicht machen,
da ich mich absolut am Standard bewegen möchte
und hoffe, in neueren Versionen sind dann meine
Wünsche befriedigt.



Ein UserControl brauchst Du für Dein Problem nicht.
Und eine "neue Version" eines DataGridView ist meines
Wissens in absehbarer Zeit nicht zu erwarten. Wozu auch?
Das DGV kann eine Menge, man muss nur wissen wie
es geht.

(Hauptgrund vermutlich jedoch: mangelndes Wissen ;-))



Ja, ist wohl so.


Was kann nun das Datagridview-Control in VS2008?



Genau das Gleiche wie das DataGridView aus VS2005.

- ZeilenNummern



Ja.

- Export auf Excel-Datei



Das DataGridView ist erst mal nur ein Control zur
Anzeige von Daten und hat somit absolut nichts
mit dem Im- oder Export von irgendwelchen Daten
von und zu einem anderen Speicherort zu tun.
Wenn Du Daten nach Excel exportieren willst, dann
ist das nicht Sache des DataGridView sondern
Sache Deines Programmcodes, der z.B. Daten
aus einer DataTable in eine Excel-Datei schicken
kann.

Ist ein Umstieg von VS2005 auf VS2008 zu empfehlen?
(derzeitiger Bedarf eigentlich nur wegen Grid-Control)



Am DataGridView àndert sich in VS2008 nichts.

Hier mal ein Beispiel mit einem DataGridView, welches
am linken Rand in den RowHeadern fortlaufende Zeilen-
nummern zeigt.

' /// Code in einem leeren Formmodul
Public Class Form1
Private WithEvents DGV As DataGridView
Private mDT As DataTable
Private mDV As DataView
Private WithEvents mCM As CurrencyManager

Private Sub CreateData()
Dim i As Integer
Dim DR As DataRow

mDT = New DataTable
With mDT
.Columns.Add("ID", GetType(Integer))
.Columns.Add("SText", GetType(String))
.Columns.Add("LText ", GetType(String))

For i = 1 To 12
DR = .NewRow
DR.Item(0) = i
DR.Item(1) = MonthName(i, True)
DR.Item(2) = MonthName(i, False)
.Rows.Add(DR)
Next
.AcceptChanges()
End With

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

End Sub


Private Sub DrawRowNumbers()
Dim i As Integer
For i = 0 To DGV.Rows.Count - 1

DGV.Rows(i).HeaderCell.Value = i.ToString
Next
End Sub

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

CreateData()

DGV = New DataGridView
With DGV
.Dock = DockStyle.Fill

.DefaultCellStyle.Font = _
New Font("Arial", 12)

.ColumnHeadersDefaultCellStyle.Font = _
New Font("Arial", 8, FontStyle.Bold)

.DataSource = mDV
.RowHeadersDefaultCellStyle.Font = _
New Font("Arial", 9, FontStyle.Bold)

.RowHeadersDefaultCellStyle.Alignment = _
DataGridViewContentAlignment.MiddleRight

.RowHeadersWidth = 50
End With
Me.Controls.Add(DGV)

DrawRowNumbers()
DGV.AutoResizeColumns()

Me.Size = New Size(300, 400)
End Sub

Private Sub mCM_PositionChanged _
(ByVal sender As Object, _
ByVal e As System.EventArgs _
) Handles mCM.PositionChanged

Me.Text = _
"mCM.Position:" & _
mCM.Position.ToString
End Sub

Private Sub DGV_RowsAdded _
(ByVal sender As Object, _
ByVal e As DataGridViewRowsAddedEventArgs _
) Handles DGV.RowsAdded

DrawRowNumbers()
End Sub

Private Sub DGV_RowsRemoved _
(ByVal sender As Object, _
ByVal e As DataGridViewRowsRemovedEventArgs _
) Handles DGV.RowsRemoved

DrawRowNumbers()
End Sub
End Class
' \\\ E N T E

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

Ähnliche fragen