Hallo Leute,
soweit ich es verstanden habe, kann man ein Datagridview nicht nach mehreren Spalten sortieren.
Deshalb gibt es die Lösung, indem man eine Tabelle verwendet und diese an das Datagridview bindet. Die Tabelle kann dabei nach mehreren Spalten sortiert werden.
Hier meine Lösung:
Dim table = New System.Data.DataTable()
Private Sub btnSearch_Click(sender As System.Object, e As System.EventArgs) Handles btnSearch.Click
Dim iJahr As Integer = txtJahr.Text
Dim sSteuer As String = cmbSteuerArt.Text
Dim sPath = My.Settings.Pfad_RoseSoft & "\"
Dim sResultPath As String
Dim iMdNr As Integer, sMdName As String
Dim SearchPattern As String = ""
Dim blnBescheid As Boolean = False
table.Columns.Add("MdNr", GetType(Integer))
table.Columns.Add("MdName", GetType(System.String))
table.Columns.Add("Jahr", GetType(Integer))
table.Columns.Add("Sendedatum", GetType(Date))
table.Columns.Add("Bescheid", GetType(System.Boolean))
SearchPattern = cmbSteuerArt.Text.ToString & "*" & iJahr & "*Formulare*.pdf"
Dim oDir As New System.IO.DirectoryInfo(sPath)
Dim oFiles As System.IO.FileInfo() = oDir.GetFiles(SearchPattern, SearchOption.AllDirectories) 'oDir.GetFiles(sSteuer & "*" & iJahr & "*Formulare*.pdf", SearchOption.AllDirectories)
Dim oFile As System.IO.FileInfo
For Each oFile In oFiles
iMdNr = oFile.DirectoryName.Substring(oFile.DirectoryName.LastIndexOf("_") + 1, (oFile.DirectoryName.Length - oFile.DirectoryName.LastIndexOf("_")) - 1)
sMdName = FindName(iMdNr)
sResultPath = CombinePaths(oFile.DirectoryName, sSteuer & ". " & iJahr) & "\"
If IO.Directory.Exists(sResultPath) Then
blnBescheid = (Directory.GetFiles(sResultPath, "*Bescheid*.pdf").Length > 0)
End If
'dgvSteuer.Rows.Add(iMdNr, sMdName, iJahr, oFile.CreationTime, blnBescheid)
table.Rows.Add(iMdNr, sMdName, iJahr, oFile.CreationTime, blnBescheid)
Next
table.DefaultView.Sort = "Bescheid, Sendedatum"
dgvSteuer.DataSource = table
End Sub
Und im ColumnHeader dann einfach wie folgt:
Private Sub dgvSteuer_ColumnHeaderMouseClick(sender As Object, e As System.Windows.Forms.DataGridViewCellMouseEventArgs) Handles dgvSteuer.ColumnHeaderMouseClick
If e.ColumnIndex = dgvSteuer.ColumnCount - 1 Then
table.DefaultView.Sort = "Bescheid, Sendedatum"
dgvSteuer.DataSource = table
End If
End Sub
Damit kann jetzt jede Spalte einzeln und nur die letzte Spalte wird immer zusammen mit einer anderen sortiert.
Das funktioniert soweit ich es sehen konnte, einwandfrei.
Gruß Ahmed