How to "unsort" a DataGridView
本文关键字:quot DataGridView unsort to How | 更新日期: 2023-09-27 17:57:40
我的windows窗体上有一个DataGridView
,它绑定到DataSource
,如下所示:
using (SqlCommand sqlCommand = new SqlCommand("SQL code here", sqlConnection))
{
using (SqlDataReader sqlDataReader = sqlCommand.ExecuteReader())
{
DataSet ds1 = new DataSet();
DataTable dt1 = new DataTable();
dt1.Columns.Add("Select", System.Type.GetType("System.Boolean"));
ds1.Tables.Add(dt1);
ds1.Load(sqlDataReader, LoadOption.PreserveChanges, ds1.Tables[0]);
dataGridView.DataSource = ds1.Tables[0];
}
}
注意行中的内容:
dt1.Columns.Add("Select", System.Type.GetType("System.Boolean"));
这将boolean
列添加到由checkbox
表示的DataGridView
。DataGridView
的CellMouseClick
处理程序看起来像这样(最简单的形式):
private void dataGridView_CellMouseClick(object sender, DataGridViewCellMouseEventArgs e)
{
dataGridView.Rows[e.RowIndex].Cells["Select"].Value = !dataGridView.Rows[e.RowIndex].Cells["Select"].Value;
}
现在,在某个时刻,我想对DataGridView
进行排序,以便所有选定的行(即,已检查checkboxes
的行)都位于顶部。所以我称这个函数为:
dataGridView.Sort(dataGridView.Columns["Select"], ListSortDirection.Descending);
它就像一种魅力。唯一的问题是,从这一点开始,当这些值发生变化时,DataGridView
将自动重新对自己进行排序。这导致了令人困惑的行为,我想停止这种行为。我如何告诉DataGridView
,好吧,伙计,你现在已经排序了,谢谢,现在保持原样,直到我再次调用排序函数?
它没有显示在代码段中,但列的SortMode
属性是否设置为Automatic
?尝试将其更改为NotSortable
或Programmatic
:
dataGridView.Columns["Select"].SortMode = DataGridViewColumnSortMode.NotSortable;