优雅地刷新DataGridView中的数据

我在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;
    }
}
上一篇:CodeGo.net>在WinForm中DataGridView自定义排序


下一篇:DataGridView中的rows.Count比实际行数多1的原因以及解决办法