我在我的winForm應用程序鏈接到一個實體模型datagridview。這是在datagridview中加載數據的代碼:在數據綁定gridview不能正常工作
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();
現在我想按columnHeader點擊排序數據。我嘗試這樣做:
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控件的細胞來進行。我該怎麼辦?
沒有DataGrid中做排序已經當您啓用了嗎?你想要做一些自定義排序嗎? – Sefa
不,它不自己排序,我正在嘗試手動執行 – Paradox
您不需要實現您自己的排序算法,請嘗試使數據源可排序。 [This](http://stackoverflow.com/a/5556482/815938)可能會幫助你。 – kennyzx