简体   繁体   English

在数据绑定的GridView上排序不起作用

[英]Sorting on databound gridview is not working

I have a datagridview in my winForm application which is linked to an entity model. 我的winForm应用程序中有一个datagridview,它链接到实体模型。 This is the code for loading data in datagridview: 这是用于在datagridview中加载数据的代码:

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

Now I want to sort the data upon columnHeader click. 现在,我想在单击columnHeader时对数据进行排序。 I tried this: 我尝试了这个:

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

but, this is throwing exception: Operation can only be performed on cells that belong to a DataGridView control. 但是,这引发了异常:操作只能在属于DataGridView控件的单元格上执行。 What should I do? 我该怎么办?

Just use the Sort method of your datagridview and you get: 只需使用datagridview的Sort方法,您将获得:

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

dgvLoadTable.Sort(column, direction);

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM