我在Windows窗体中有一个DataGridView,并且此网格包含接近实时的数据-我希望它至少每20秒更新一次.我的网格绑定到了我以编程方式生成的DataTable,所以我目前有一个计时器来生成此DataTable,并每20秒将其分配给网格一次.
但是我的问题是,当刷新数据时,网格上的所有选择或排序都将消失,这是一个很大的可用性问题.还有其他方法可以刷新网格的内容,并保留选择/排序吗?
解决方法:
恢复排序顺序和行选择的粗略指南.
在刷新之前执行此操作:
// Store the sort details.
ListSortDirection oldSortOrder;
switch (uiGrid.SortOrder)
{
case SortOrder.Ascending:
oldSortOrder = ListSortDirection.Ascending;
break;
case SortOrder.Descending:
oldSortOrder = ListSortDirection.Descending;
break;
default:
oldSortOrder = ListSortDirection.Ascending;
break;
}
DataGridViewColumn oldSortColumn = uiGrid.SortedColumn;
// Store the selected rows
List<String> selectedRows = new List<String>();
foreach (DataGridViewRow row in uiGrid.SelectedRows)
{
selectedRows.Add(row.Cells["SomeIndexColumn"].Value.ToString());
}
在刷新后执行此操作:
// Restore the sort
uiGrid.Sort(oldSortColumn, oldSortOrder);
// Restore Selected rows
foreach (DataGridViewRow row in uiGrid.SelectedRows)
{
if (selectedRows.Contains(row.Cells["SomeIndexColumn"].Value.ToString()))
{
row.Selected = true;
}
}