Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 获取并设置DataGridView的排序(列和升序/降序)_C#_Sorting_Datagridview_Datagridviewcolumn - Fatal编程技术网

C# 获取并设置DataGridView的排序(列和升序/降序)

C# 获取并设置DataGridView的排序(列和升序/降序),c#,sorting,datagridview,datagridviewcolumn,C#,Sorting,Datagridview,Datagridviewcolumn,我有个小问题。我需要保存排序(按哪个列和升序或降序),并在程序的下一次启动时加载它。 获取当前选定的列没有问题,我可以通过 private int GetSortColumn() { DataGridViewColumn sortColumn = this.dataGridView.SortedColumn; if (sortColumn != null) { Properties.Settings.Defa

我有个小问题。我需要保存排序(按哪个列和升序或降序),并在程序的下一次启动时加载它。 获取当前选定的列没有问题,我可以通过

    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?或者,如果dataGridView按升序或降序排序,是否有更好的解决方案可以设置

谢谢和问候!
reijin

好的,我可以通过在我的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);
        }
    }
也许它会帮助别人;)

@Ken这会有用的

我不知道这是否仍然相关,但这似乎是一种更简单的方法:)


是的,这可以设置它-但它不会告诉您DataGridView列排序方向。您是否了解了如何获取列排序方向以便使用它?
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);
}