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