【问题标题】:datagridview sorted by id descending order c# in winform application在winform应用程序中按id降序排序的datagridview c#
【发布时间】:2013-11-14 08:16:13
【问题描述】:

我正在使用 VS2012 开发 C# WinForms 应用程序。默认情况下,当单击 DataGridView 中的列标题时,它不会对该列进行升序排序,然后您可以再次单击列标题对其进行降序排序。

所以第一次点击按降序排序,然后第二次点击按升序排序,我无法弄清楚如何做到这一点。有人知道吗?

【问题讨论】:

  • 第一次单击列标题时,您想先降序排序,然后再升序排序?你说的是这个吗?

标签: c# winforms sorting visual-studio-2012 datagridview


【解决方案1】:

如果您想始终按Descending 顺序对其进行排序,请尝试以下代码:

void dataGridView1_ColumnHeaderMouseClick(object sender, DataGridViewCellMouseEventArgs e)
{      
  dataGridView1.Sort(dataGridView1.Columns[dataGridView1.SortedColumn.Name],ListSortDirection.Descending);
}

如果您想交替并从第一个降序开始,然后在第二个升序开始。您可以声明一个全局变量(至少在您的表单中),例如:

Boolean lastSortedAscending = false;

那么您的ColumnHeaderMouseClick 事件可能如下所示:

void dataGridView1_ColumnHeaderMouseClick(object sender, DataGridViewCellMouseEventArgs e)
{      
   lastSortedAscending = !lastSortedAscending;
   if ( lastSortedAscending) 
      { 
       dataGridView1.Sort(dataGridView1.Columns[dataGridView1.SortedColumn.Name],ListSortDirection.Descending); 
      }
   else
     {
       dataGridView1.Sort(dataGridView1.Columns[dataGridView1.SortedColumn.Name],ListSortDirection.Ascending); 
     }
}

或者不声明全局变量 - 你也可以这样做,例如:

void dataGridView1_ColumnHeaderMouseClick(object sender, DataGridViewCellMouseEventArgs e)
{      

if (dataGridView1.SortOrder.ToString() == "Ascending") // Check if sorting is Ascending
    { 
       dataGridView1.Sort(dataGridView1.Columns[dataGridView1.SortedColumn.Name],ListSortDirection.Descending); 
      }
   else
     {
       dataGridView1.Sort(dataGridView1.Columns[dataGridView1.SortedColumn.Name],ListSortDirection.Ascending); 
     }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-12-21
    • 2021-11-18
    • 1970-01-01
    • 2011-06-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多