6

私はVS2008でC#WinFormsアプリを使用しています。デフォルトでは、DataGridViewの列ヘッダーをクリックすると、その列が昇順で並べ替えられます。次に、列ヘッダーをもう一度クリックして、降順で並べ替えることができます。

これを逆にしようとしているので、最初のクリックで降順で並べ替え、次に2回目のクリックで昇順で並べ替えますが、これを行う方法がわかりません。誰か知っている?

ありがとう

4

4 に答える 4

9

HeaderCell SortGlyphDirectionをAscendingに設定すると、次のクリックで降順が表示されます。デフォルトはnoneです。

dataGridView1.Sort(Column1, ListSortDirection.Ascending);
this.Column1.HeaderCell.SortGlyphDirection = System.Windows.Forms.SortOrder.Ascending;
于 2009-07-28T13:26:01.123 に答える
9
foreach (DataGridViewColumn column in DataGridView1.Columns)
{
    column.SortMode = DataGridViewColumnSortMode.Programmatic;
}

private void DataGridView1_ColumnHeaderMouseClick(object sender, DataGridViewCellMouseEventArgs e)
{
    var column = DataGridView1.Columns[e.ColumnIndex];
    if (column.SortMode != DataGridViewColumnSortMode.Programmatic)
        return;

    var sortGlyph = column.HeaderCell.SortGlyphDirection;
    switch (sortGlyph)
    {
        case SortOrder.None:
        case SortOrder.Ascending:
            DataGridView1.Sort(column, ListSortDirection.Descending);
            column.HeaderCell.SortGlyphDirection = SortOrder.Descending;
            break;
        case SortOrder.Descending:
            DataGridView1.Sort(column, ListSortDirection.Ascending);
            column.HeaderCell.SortGlyphDirection = SortOrder.Ascending;
            break;
    }
}
于 2010-10-05T07:05:21.577 に答える
5

以下のコードをお勧めします

MyDGV.Sort(MyDGV.Columns[column_Index], ListSortDirection.Ascending);
于 2016-12-15T23:19:24.020 に答える
0

を見てくださいDataGridView.SortCompare。以下のmsdnの例のわずかに変更されたバージョンを参照してください。

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.CellValue2.ToString(), e.CellValue1.ToString()); // descending sort

        e.Handled = true;
    }
于 2009-07-28T13:21:21.550 に答える