获取和设置数据网格视图的排序(列和升序/降序)

本文关键字:升序 降序 置数据 网格 视图 获取 排序 | 更新日期: 2023-09-27 18:35:43

我遇到了一个小问题。我需要保存排序(通过哪个列和升序或降序)并在下次启动程序时加载它。获取当前选定的列没有问题,我通过以下方式执行此操作

    private int GetSortColumn()
    {
        DataGridViewColumn sortColumn = this.dataGridView.SortedColumn;
        if (sortColumn != null)
        {
            Properties.Settings.Default.sortingColumnSortMode = dataGridView.SortOrder;
            return sortColumn.Index;
        }
        else
            //error
            return -1;
    }

并将数据保存在我的设置中。设置此属性也没有问题:

    private void SetSortColumn(int indexOfColumn)
    {
        if (indexOfColumn != null && indexOfColumn != -1)
        {
            this.dataGridView.Sort(this.dataGridView.Columns[indexOfColumn], ListSortDirection.Descending);
        }
    }

但是我还需要保存并设置升序或降序属性。我该怎么做?有没有办法使用 dataGridView.SortedColumn 获取 ListSortDirection?或者是否有更好的解决方案来设置数据网格视图是否按升序或降序排序?

谢谢和问候!灵人

获取和设置数据网格视图的排序(列和升序/降序)

我不知道

这是否仍然相关,但这看起来是一种更简单的方法:)

if(gridView1.Columns[e.ColumnIndex].HeaderCell.SortGlyphDirection == System.Windows.Forms.SortOrder.Descending)
{
     // you can ascending if you want
     gridView1.Sort(gridView1.Columns[e.ColumnIndex], ListSortDirection.Ascending);
}
else
{
      // you can descending if you want
     gridView1.Sort(gridView1.Columns[e.ColumnIndex], ListSortDirection.Descending);
}

好的,我可以通过简单地在我的 SetSortColumn 中添加一个开关来解决我的问题:

    private void SetSortColumn(int indexOfColumn)
    {
        if (indexOfColumn != null && indexOfColumn != -1)
        {
            ListSortDirection listSort;
            switch (Properties.Settings.Default.sortingColumnSortMode)
            {
                case SortOrder.Ascending:
                    listSort = ListSortDirection.Ascending;
                    break;
                case SortOrder.Descending:
                    listSort = ListSortDirection.Descending;
                    break;
                default:
                    listSort = ListSortDirection.Descending;
                    break;
            }
            this.dataGridView.Sort(this.dataGridView.Columns[indexOfColumn], listSort);
        }
    }

也许它会帮助其他人;)