更新SQL适配器后保留Datagrid视图的排序顺序

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了更新SQL适配器后保留Datagrid视图的排序顺序相关的知识,希望对你有一定的参考价值。

正如标题所说,我正在寻找一种方法来在从SQL刷新数据后保留DataGridView的排序顺序。

如果我对任何列进行排序,只要刷新数据,就不再对列进行排序,并且不再选择我所选的行。

有一个简单的解决方案,可能是:

Dim NewSort as Something
SortOrder = DataGridView1
DataGridView1.Refresh
DataGridView1.SortOrder = NewSort

我知道上面的代码是假设的,但我会对任何解决方案感到满意或者指向正确的方向。谷歌和必应没有提供有用的资源。

答案

我假设你有一个排序,你做数据库刷新,你的排序已经消失。我以前遇到过这个。我创建了一个继承的网格来处理这个,但有一般的想法。

假设您绑定到DataView,请考虑这一点。

' Get the Sort
string currentSort = "";
if ( grid.DataSource != null )
    currentSort = ((DataView) grid.DataSource).Sort

' Reset the Data Source
grid.DataSource = yournewsource of data ' Better Be a Data View

' Recall the Sort
((DataView) grid.DataSource).Sort = currentSort

我做的一件事是有一个继承的网格,其中数据DataSource Get属性被覆盖以具有此功能,并在整个应用程序中使用继承的网格,而不是必须将此代码放在任何地方。如果您愿意进入Designer文件并进行编辑,则很容易更改为继承的网格。

public class MyDataGridView : System.Windows.Forms.DataGridView
{


    public object DataSource
    {
        get
        {
            return base.DataSource;
        }
        set
        {
            string currentSort = "";
            if (!(base.DataSource == null))
                currentSort = ((DataView)base.DataSource).Sort;

            base.DataSource = value;
            ((DataView)base.DataSource).Sort = currentSort;
        }
    }


}

以上是关于更新SQL适配器后保留Datagrid视图的排序顺序的主要内容,如果未能解决你的问题,请参考以下文章

将 xml 文件加载到 Datagrid 视图并在更新后再次保存

ASP.NET 新手 - 无法从 SQL 数据库更新 DataGrid

无法通过带有 TableAdapter 的视图更新 SQL

在多线程环境中更新 DataGrid 视图

删除项目后如何更新列表视图?

RecyclerView 适配器 - 列表正在更新,但视图没有