【问题标题】:Get and Set sortation (Column and Ascending/Descending) of a DataGridView获取和设置 DataGridView 的排序(列和升序/降序)
【发布时间】:2012-05-29 19:18:37
【问题描述】:

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

    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是升序还是降序有没有更好的设置?

感谢和问候! 灵人

【问题讨论】:

    标签: c# sorting datagridview datagridviewcolumn


    【解决方案1】:

    @Ken 这会起作用的

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

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

    【讨论】:

      【解决方案2】:

      好的,我只需在我的 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);
              }
          }
      

      也许它会帮助别人;)

      【讨论】:

      • 是的,这可以设置它 - 但它不会告诉您 DataGridView Columns 的排序方向。您是否找到了如何获取列排序方向以便您可以使用它?
      猜你喜欢
      • 2011-08-25
      • 1970-01-01
      • 1970-01-01
      • 2020-02-08
      • 2012-11-08
      • 2023-03-07
      • 2016-03-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多