我正在使用 VS2012 开发 C# WinForms 应用程序。默认情况下,当单击 DataGridView 中的列标题时,它不会对该列进行升序排序,然后您可以再次单击列标题对其进行降序排序。
所以第一次点击排序降序然后第二次点击排序升序,我无法弄清楚如何做到这一点。有人知道吗?
我正在使用 VS2012 开发 C# WinForms 应用程序。默认情况下,当单击 DataGridView 中的列标题时,它不会对该列进行升序排序,然后您可以再次单击列标题对其进行降序排序。
所以第一次点击排序降序然后第二次点击排序升序,我无法弄清楚如何做到这一点。有人知道吗?
如果您想始终按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);
}
}