对数据绑定网格视图进行排序不起作用

本文关键字:排序 不起作用 视图 数据绑定 网格 | 更新日期: 2023-09-27 18:34:54

我的winForm应用程序中有一个链接到实体模型的数据网格视图。这是在数据网格视图中加载数据的代码:

var rawData = context.GetType().GetProperty(TableName).GetValue(context, null);
var truncatedData = ((IQueryable<object>)rawData).ToList();
crudBindingSource.DataSource = new BindingSource { DataSource = truncatedData };
dgvLoadTable.DataSource = crudBindingSource;
dgvLoadTable.Refresh();

现在我想在单击列标题时对数据进行排序。我试过这个:

private void dgvLoadTable_ColumnHeaderMouseClick(object sender, DataGridViewCellMouseEventArgs e)
{
  DataGridViewColumn column = dgvLoadTable.Columns[e.ColumnIndex];
  DataGridViewColumn _sortColumn = null;
  bool isSortAscending = false;
  isSortAscending = (_sortColumn == null || isSortAscending == false);
  string direction = isSortAscending ? "ASC" : "DESC";
  crudBindingSource.DataSource = context.TableName.OrderBy(
  string.Format("it.{0} {1}", column.DataPropertyName, direction)).ToList();
  if (_sortColumn != null) _sortColumn.HeaderCell.SortGlyphDirection = SortOrder.None;
    column.HeaderCell.SortGlyphDirection = isSortAscending ? SortOrder.Ascending : SortOrder.Descending;
   //exception here
  _sortColumn = column;
 }

但是,这是引发异常:只能对属于 DataGridView 控件的单元格执行操作。我该怎么办?

对数据绑定网格视图进行排序不起作用

只需使用 datagridview 的 Sort 方法,即可获得:

DataGridViewColumn column = dgvLoadTable.Columns[e.ColumnIndex];
ListSortDirection direction = isSortAscending ? ListSortDirection.Ascending : ListSortDirection.Descending;
dgvLoadTable.Sort(column, direction);