Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/security/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sorting 调用排序时,提供的列不属于此DataGridView控件_Sorting_Datagridview - Fatal编程技术网

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

Sorting 调用排序时,提供的列不属于此DataGridView控件,sorting,datagridview,Sorting,Datagridview,我有一个带有可排序列的DataGridViewControl。编辑此控件行中一条记录的数据后,将刷新记录列表,并更新DataGridViewControl: m_Helper.UpdateRecord( some variables ); dgvMyData.DataSource = ReloadData(); 在此之前,我保存SortOrder和用于排序的列: SortOrder sortOrder = dgvMyData.SortOrder; DataGridViewColumn 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 );
if ( !string.IsNullOrWhiteSpace( sortedColumn.Name ) && 
    dgvMyData.Columns[ sortedColumn.Name ] != null )
{
    dgvMyData.Sort(
        dgvMyData.Columns[ sortedColumn.Name ],
        listSortDirection );
}

这总是会导致
ArgumentException
出现上面显示的错误消息-我假设发生这种情况是因为重新加载
DataGridView
的数据也会导致
DataGridViewColumn
成为不同的列,即使它被称为相同的列并且包含相同类型的数据。如何实现解决方案?

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

ListSortDirection listSortDirection;
if ( sortOrder == SortOrder.Ascending )
{
    listSortDirection = ListSortDirection.Ascending;
}
else
{
    listSortDirection = ListSortDirection.Descending;
}

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