c# - DataGridView 列排序方向始终为 asc
问题描述
我正在尝试使用来自数据表的数据源的总行对 datagridview 进行排序。我想要实现的是在每次用户单击数据网格列时排除总行排序。我正在使用 DataGridViewCellMouseEventArgs 来捕获此事件。这是我的代码:
private void dgv_ColumnHeaderMouseClick(object sender, DataGridViewCellMouseEventArgs e)
{
DataGridView dgv = sender as DataGridView;
var columnSortDirection = string.Empty;
var columnName = dgv.SortedColumn.DataPropertyName;
if (dgv.Columns[e.ColumnIndex].HeaderCell.SortGlyphDirection == SortOrder.Descending)
{
columnSortDirection = "DESC";
}
else
{
columnSortDirection = "ASC";
}
//remove total row before sort
var lastRow = dt.Rows[dt.Rows.Count - 1];
dt.Rows.Remove(lastRow);
//sort datatable
DataView dv = dt.DefaultView;
dv.Sort = string.Format("{0} {1}", columnName, columnSortDirection);
DataTable sortedDt = dv.ToTable();
//reinserting total row after dt is sorted
InsertTotalRow(sortedDt);
dgv.DataSource = sortedDt;
}
该代码仅适用于升序,但不适用于其他。无论出于何种原因,当用户再次单击该列时,它永远不会将方向更改为下降。我在这里做错了什么?
解决方案
推荐阅读
- sql - 输出匹配条件的记录,以及它们的父记录直到根记录。甲骨文 SQL
- node.js - 无论我尝试什么,npm 'command not found'
- git - 无法推送 git:权限被拒绝
- javascript - Chrome 扩展在注入脚本和 popup.js 之间进行通信
- scala - 从 Scala 项目中排除特定的隐式
- python - Python Tkinter - 如何从开始窗口访问父类字典
- c# - 如何使用 Azure 存储表服务处理实体转换错误
- gradle - Gradle:尝试构建 *.so 不会产生任何结果
- django - 如何从Django中的另一个函数访问函数中的变量
- r - sjt.lmer 显示不正确的 p 值