Hallo Leute
Vor einer Weile habe ich mir mal eine Funktion geschrieben um die (gefilterten) Daten meiner DGVs zu exportieren. Also es wird das was der User gerade in einem DGV mit DataBinding ans Dts sieht exportiert.
Hierbei greife ich allerdings die Daten direkt aus dem DGV ab.
Da ist ja zum einen unsauber (da im Control rumzufuschen, statt die Daten aus der Bindingsource zu nehmen) und es hat den Nachteil, dass der User nur die Spalten exportieren kann, die das DGV auch anzeigt.
Nun bin ich dabei das ganze etwas zu säubern. Die Export Daten sollen nun aus der Bindingsource kommen und nicht mehr aus dem DGV.
Mein Ansatz liefert auch schon eine korrekte csv, bzw. Exceldatei.
Aber an einer Stelle habe ich so meine Probleme:
Ich übergebe der Exportfunktion eine Liste mit zu exportierenden Spalten (diese kann der User vorher auswählen), das Trennzeichen (für csv), die Bindingsource des DGV, und (leider auch) das Das DGV selbst.
Denn innerhalb der Sub habe ich folgendes Problem:
Ich muss ja mit dem doppelten DirectCast auf meine typisierte Datarow Casten:
hier muss ich ja aber angeben um welche DataRow es sich handelt - also hier DtsSettings.ArticleRow.
Dies Suche ich mir bisher anhand einer Select Case Anweisung anhand des DGV - aber das muss doch sauberer gehen.
Bekomme ich diese DtsSettings.Datarow irgendwie aus der Bindingsource?
Vor einer Weile habe ich mir mal eine Funktion geschrieben um die (gefilterten) Daten meiner DGVs zu exportieren. Also es wird das was der User gerade in einem DGV mit DataBinding ans Dts sieht exportiert.
Hierbei greife ich allerdings die Daten direkt aus dem DGV ab.
Da ist ja zum einen unsauber (da im Control rumzufuschen, statt die Daten aus der Bindingsource zu nehmen) und es hat den Nachteil, dass der User nur die Spalten exportieren kann, die das DGV auch anzeigt.
Nun bin ich dabei das ganze etwas zu säubern. Die Export Daten sollen nun aus der Bindingsource kommen und nicht mehr aus dem DGV.
Mein Ansatz liefert auch schon eine korrekte csv, bzw. Exceldatei.
Aber an einer Stelle habe ich so meine Probleme:
Ich übergebe der Exportfunktion eine Liste mit zu exportierenden Spalten (diese kann der User vorher auswählen), das Trennzeichen (für csv), die Bindingsource des DGV, und (leider auch) das Das DGV selbst.
Denn innerhalb der Sub habe ich folgendes Problem:
Ich muss ja mit dem doppelten DirectCast auf meine typisierte Datarow Casten:
hier muss ich ja aber angeben um welche DataRow es sich handelt - also hier DtsSettings.ArticleRow.
Dies Suche ich mir bisher anhand einer Select Case Anweisung anhand des DGV - aber das muss doch sauberer gehen.
Bekomme ich diese DtsSettings.Datarow irgendwie aus der Bindingsource?
VB.NET-Quellcode
- For i = 0 To Source.Count - 1
- For Each col In ExportColsList
- Select Case DGV.Name
- Case = "ArticleDataGridView"
- row1 = DirectCast(DirectCast(Source.Item(i), DataRowView).Row, DtsSettings.ArticleRow)
- Case = "DTAddressbookDataGridView"
- row1 = DirectCast(DirectCast(Source.Item(i), DataRowView).Row, DtsSettings.PersonRow)
- End Select
- If Not row1(col.ColumnName).ToString Is Nothing Then
- csvFile &= row1(col.ColumnName).ToString() & strDelimiter
- Else
- csvFile &= strDelimiter
- End If
- Next
- For j = 1 To strDelimiter.Length
- charDelimiter = strDelimiter(strDelimiter.Length - j)
- csvFile = csvFile.TrimEnd(charDelimiter)
- Next
- csvFile &= Environment.NewLine
- Next