更新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 视图并在更新后再次保存