我有DataGridViewControl
可排列的列。编辑此控件的一行中的一条记录的数据后,将刷新记录列表并更新DataGridViewControl
:
m_Helper.UpdateRecord( some variables );
dgvMyData.DataSource = ReloadData();
在我这样做之前,我保存SortOrder
和用于排序的列:
SortOrder sortOrder = dgvMyData.SortOrder;
DataGridViewColumn sortedColumn = dgvMyData.SortedColumn;
现在重新加载数据之后我想在预先选择的列上进行相同的排序,但我总是得到错误消息
提供的列不属于此DataGridView控件
相应的代码如下所示:
ListSortDirection listSortDirection;
if ( sortOrder == SortOrder.Ascending )
{
listSortDirection = ListSortDirection.Ascending;
}
else
{
listSortDirection = ListSortDirection.Descending;
}
dgvMyData.Sort( sortedColumn, listSortDirection );
这总是会导致ArgumentException
出现上面显示的错误消息 - 我认为这是因为重新加载DataGridView
的数据也会导致DataGridViewColumn
与不同< / em>一个即使它被称为相同并包含相同类型的数据。我该如何实施解决方案?
答案 0 :(得分:0)
正如我的问题所假设的那样,直接使用sortedColumn的实例并不起作用,因为它不再是网格的一部分。我改为使用列的名称:
if ( !string.IsNullOrWhiteSpace( sortedColumn.Name ) &&
dgvMyData.Columns[ sortedColumn.Name ] != null )
{
dgvMyData.Sort(
dgvMyData.Columns[ sortedColumn.Name ],
listSortDirection );
}