我在C#中的DataGridView有一些問題。DataGridView保存過濾後重新加載
的情況是:
我做數據庫的一些更新,然後我重裝的DataGridView用新值:
myDataGridView.DataSource = myDataSet.Tables[0]
一切正常,但最近有人問我,如果有可能保持在同一列過濾後重新加載數據?
做這個過濾案例的方法是什麼?
感謝您的任何想法。
我在C#中的DataGridView有一些問題。DataGridView保存過濾後重新加載
的情況是:
我做數據庫的一些更新,然後我重裝的DataGridView用新值:
myDataGridView.DataSource = myDataSet.Tables[0]
一切正常,但最近有人問我,如果有可能保持在同一列過濾後重新加載數據?
做這個過濾案例的方法是什麼?
感謝您的任何想法。
好吧,我找到了解決方案,也許它會幫助別人: [順便說一句。我做了一些語言錯誤過濾=排序;-)]
DataGridViewColumn oldColumn = dataGridView1.SortedColumn;
ListSortDirection direction;
if (dataGridView1.SortOrder == SortOrder.Ascending) direction = ListSortDirection.Ascending;
else direction = ListSortDirection.Descending;
databaseUpdateFunction();
DataGridViewColumn newColumn = dataGridView1.Columns[oldColumn.Name.ToString()];
dataGridView1.Sort(newColumn,direction);
newColumn.HeaderCell.SortGlyphDirection =
direction == ListSortDirection.Ascending ?
SortOrder.Ascending : SortOrder.Descending;
我使用的代碼部分來自:link text
我把庫巴的解決方案,並把它放在一個工具類,我可以在任何DataGridView
使用:
private static ListSortDirection _oldSortOrder;
private static DataGridViewColumn _oldSortCol;
/// <summary>
/// Saves information about sorting column, to be restored later by calling RestoreSorting
/// on the same DataGridView
/// </summary>
/// <param name="grid"></param>
public static void SaveSorting(DataGridView grid)
{
_oldSortOrder = grid.SortOrder == SortOrder.Ascending ?
ListSortDirection.Ascending : ListSortDirection.Descending;
_oldSortCol = grid.SortedColumn;
}
/// <summary>
/// Restores column sorting to a datagrid. You MUST call this AFTER calling
/// SaveSorting on the same DataGridView
/// </summary>
/// <param name="grid"></param>
public static void RestoreSorting(DataGridView grid)
{
if (_oldSortCol != null)
{
DataGridViewColumn newCol = grid.Columns[_oldSortCol.Name];
grid.Sort(newCol, _oldSortOrder);
}
}
使用這個樣子:
GridUtility.SaveSorting(grid);
grid.DataSource = databaseFetch(); // or whatever
GridUtility.RestoreSorting(grid);
我來了在我遇到問題之前跨過Adam Nofsinger的回答,但無論如何我仍然使用它。它工作非常有趣。
只需要使用線這2 添加到我的類文件:
using System.ComponentModel;
using System.Windows.Forms;
感謝, 海爾特。
您應該將此標記爲答案,並且謝謝! – 2011-02-11 15:13:17