Autor Beitrag
yndaso
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 108



BeitragVerfasst: Do 19.05.11 10:27 
Hallo zusammen,
ich möchte/muss in einem DataGridView nach mehreren Spalten sortieren.

Mein DataGridView besteht aus mehrern spalten (Source/Name/Idn/Text/...)

Nun soll nach dem Füllen des grids zweistufig, erst nach source dann nach idn geordnet werden.

Habe in der msn dazu was gefunden, dass sich vielversprechend anhört:
ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
   private void dataGridView1_SortCompare(object sender,
        DataGridViewSortCompareEventArgs e)
    {
        // Try to sort based on the cells in the current column.
        e.SortResult = System.String.Compare(
            e.CellValue1.ToString(), e.CellValue2.ToString());

        // If the cells are equal, sort based on the ID column.
        if (e.SortResult == 0 && e.Column.Name != "îdn")
        {
            e.SortResult = System.String.Compare(
                dataGridView1.Rows[e.RowIndex1].Cells["îdn"].Value.ToString(),
                dataGridView1.Rows[e.RowIndex2].Cells["îdn"].Value.ToString());
        }
        e.Handled = true;
    }


Allerdings schaffe ich es nicht, dieses Ereigniss aufzurufen.
Den Handler hab ich zwar drin, aber der aufruf klappt nicht
ausblenden C#-Quelltext
1:
2:
        dataGridView1.SortCompare += new DataGridViewSortCompareEventHandler(
            this.dataGridView1_SortCompare);


Daher nun meine Frage, krieg ich überhaupt mein Problem damit gelöst und wenn ja wie schaffe ich es dass das Ereigniss aufgerufen wird?

Danke
Th69
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Moderator
Beiträge: 4807
Erhaltene Danke: 1061

Win10
C#, C++ (VS 2017/19/22)
BeitragVerfasst: Do 19.05.11 10:48 
Hallo,

hast du den Hinweis in der MSDN dazu gelesen?
MSDN hat folgendes geschrieben:

Dieses Ereignis tritt nur ein, wenn die DataSource-Eigenschaft nicht festgelegt ist und der VirtualMode-Eigenschaftenwert false ist.

Dieses Ereignis vergleicht Zellpaare in der Spalte, die sortiert wird. Es tritt nur ein, wenn auf den Header einer Spalte mit dem SortMode-Eigenschaftenwert Automatic geklickt wird oder wenn Sie die Sort(DataGridViewColumn, ListSortDirection)-Überladung aufrufen. Wenn dieses Ereignis für eine Spalte mit dem SortMode-Eigenschaftenwert Programmatic eintritt, müssen Sie das Sortiersymbol über die DataGridViewColumnHeaderCell.SortGlyphDirection-Eigenschaft anzeigen.

In deinem Fall also einfach die DataGridView.Sort-Methode aufrufen.