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

时间:2018-01-09 19:32:24

标签: vb.net datagridview

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

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

是否有一个简单的解决方案:

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

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

1 个答案:

答案 0 :(得分:1)

我假设你有一个排序,你做数据库刷新,你的排序已经消失。我之前遇到过这种情况。我创建了一个继承的网格来处理这个问题,但总的来说就是这样。

假设您绑定到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;
        }
    }


}