ja, ist mir klar.
Der Code der gesamten Form ist sehr übersichtlich:
Option Strict On
Imports System.Data
Public Class MassenListe
Dim mDV As DataView
Private Sub MassenListe_Load(ByVal sender As Object, ByVal e As _
System.EventArgs) Handles Me.Load
'Stop
'Dim i As Integer = mDT.Rows.Count
Dim ViewFilter1 = "PgID = " & sqlPgID
mDV = New DataView(mDT)
mDV.RowFilter = ViewFilter1
'Dim j As Integer = mDV.Count
DGV_Massen.DataSource = mDV
DGV_Massen.AutoResizeColumns()
Me.BringToFront()
Me.TopMost = True
DGV_Massen.AllowUserToDeleteRows = True
End Sub
Private Sub DGV_Massen_CellValidated(ByVal sender As Object, ByVal e As _
System.Windows.Forms.DataGridViewCellEventArgs) Handles _
DGV_Massen.CellValidated
Dim R As Integer = e.RowIndex
Dim C As Integer = e.ColumnIndex
If Len(DGV_Massen.Item(C, R).Value) = 0 Then
DGV_Massen.Item("MarkID", R).Value = "PM_" & Now.ToString
End If
End Sub
Private Sub DGV_Massen_DataError(ByVal sender As Object, ByVal e As _
System.Windows.Forms.DataGridViewDataErrorEventArgs) Handles _
DGV_Massen.DataError
'If MsgBox("Fehler in Datensatz bei Index " & e.RowIndex.ToString &
' vbCrLf _
' & "Soll der Datensatz gelöscht werden? " & vbCrLf,
' MsgBoxStyle.YesNo, "PlanMass Fehler in Datensatz") = MsgBoxResult.Yes
' Then
'mDT.Rows(e.RowIndex).Delete()
'mDT.AcceptChanges()
'End If
End Sub
Private Sub DGV_Massen_MouseDown(ByVal sender As Object, ByVal e As _
System.Windows.Forms.MouseEventArgs) Handles DGV_Massen.MouseDown
If e.Button = Windows.Forms.MouseButtons.Right Then
If DGV_Massen.SelectedRows.Count > 0 Then
Dim dTExp As New DataTable
If MsgBox("möchten Sie die " & DGV_Massen.SelectedRows.Count & _
" markierten Zeilen exportieren?", MsgBoxStyle.YesNo, _
"Massenexport") = MsgBoxResult.Yes Then
dTExp = mDT.Clone
For i = 0 To DGV_Massen.SelectedRows.Count - 1 _
'Durchläuft alle Einträge im Datagridview
Dim row As DataRow = dTExp.NewRow _
'In jedem Durchgang eine neue Zeile erstellen
On Error GoTo nächster
For j As Integer = 0 To DGV_Massen.ColumnCount - 1 _
'für alle Spalten im DGV
row(j) = DGV_Massen.SelectedRows(i).Cells(j).Value _
'Wert der Zelle in die neue Zeile kopieren
Next
dTExp.Rows.Add(row) _
'Neue Zeile zu Datatable hinzufügen
nächster: ' Fehler in der Zeile erkannt, versuche die nächste
' Zeile
Next
Call HauptFormular.MassenTableToCSV("", ";", dTExp) _
' exportiert die Datensätze
End If
Else
If MsgBox("möchten Sie die komplette Massenliste exportieren?", _
MsgBoxStyle.YesNo, "Massenexport") = MsgBoxResult.Yes Then
Call HauptFormular.MassenTableToCSV() _
' exportiert alle Datensätze
End If
End If
'Else ' bei Linksklick
'Dim i As Integer = DGV_Massen.RowCount
End If
End Sub
Private Sub DGV_Massen_RowsRemoved(ByVal sender As Object, ByVal e As _
System.Windows.Forms.DataGridViewRowsRemovedEventArgs) Handles _
DGV_Massen.RowsRemoved
mDT.AcceptChanges()
End Sub
End ClassDas Validated-Ereignis hatte ich schon mal rausgenommen, ändert auch nichts.
Danke für die Hilfe
Gruß Christian |