最初的DataGridViewColumn排序方向(DataGridViewColumn initi

2019-09-21 04:46发布

我在VS2008工作在C#WinForms应用程序。 通过在它按该列升序一个DataGridView列标题,当点击默认情况下,您可以单击列标题再次降序排序。

我试图扭转这种,所以最初的点击降序排序,然后第二次点击升序排序,我一直无法弄清楚如何做到这一点。 有人知道吗?

谢谢

Answer 1:

您可以设置HeaderCell SortGlyphDirection为升序,再下点击会给你的降​​序排列。 默认是没有的。

dataGridView1.Sort(Column1, ListSortDirection.Ascending);
this.Column1.HeaderCell.SortGlyphDirection = System.Windows.Forms.SortOrder.Ascending;


Answer 2:

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;
    }
}


Answer 3:

我建议下面的代码

MyDGV.Sort(MyDGV.Columns[column_Index], ListSortDirection.Ascending);


Answer 4:

看看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;
    }


文章来源: DataGridViewColumn initial sort direction