调用排序时提供的列不属于此 DataGridView 控件

Column provided does not belong to this DataGridView control when calling Sort

我有一个带有可排序列的 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 成为 不同一个,即使它的名称相同并且包含相同类型的数据。我该如何实施解决方案?

正如我在问题中假设的那样,直接使用 sortedColumn 的实例不起作用,因为它不再是网格的一部分。我改为使用列的名称,如下所示:

if ( !string.IsNullOrWhiteSpace( sortedColumn.Name ) && 
    dgvMyData.Columns[ sortedColumn.Name ] != null )
{
    dgvMyData.Sort(
        dgvMyData.Columns[ sortedColumn.Name ],
        listSortDirection );
}