DataGridViewColumn初始排序方向

时间:2009-07-28 12:59:41

标签: c# winforms datagridview sortdirection

我在VS2008上使用C#WinForms应用程序。默认情况下,当单击DataGridView中的列标题时,它会对该列Ascending进行排序,然后您可以再次单击列标题将其排序为Descending。

我试图改变这一点,所以初始点击排序降序然后第二次点击排序升序,我无法弄清楚如何做到这一点。有谁知道吗?

由于

4 个答案:

答案 0 :(得分:9)

您可以将HeaderCell SortGlyphDirection设置为Ascending,然后下一次单击将为您提供降序。默认值为none。

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

答案 1 :(得分:8)

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

答案 2 :(得分:3)

我建议使用以下代码

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

答案 3 :(得分: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;
    }