正如标题所说,我正在寻找一种方法来在从SQL刷新数据后保留DataGridView的排序顺序。
如果我对我的任何列进行排序,只要刷新数据,就不再对列进行排序,并且不再选择我所选的行。
是否有一个简单的解决方案:
Dim NewSort as Something
SortOrder = DataGridView1
DataGridView1.Refresh
DataGridView1.SortOrder = NewSort
我知道上面的代码是假设的,但我会对任何解决方案感到满意或指向正确的方向。谷歌和必应没有提供有用的资源。
答案 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;
}
}
}