C# 如何";“不排序”;DataGridView

C# 如何";“不排序”;DataGridView,c#,datagridview,C#,Datagridview,我的windows窗体上有一个DataGridView,它绑定到一个DataSource上,如下所示: using (SqlCommand sqlCommand = new SqlCommand("SQL code here", sqlConnection)) { using (SqlDataReader sqlDataReader = sqlCommand.ExecuteReader()) { DataSet ds1 = new DataSet();

我的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
列添加到由
复选框表示的
DataGridView
DataGridView
CellMouseClick
处理程序看起来像这样(以最简单的形式):

现在,我想对
DataGridView
进行排序,以便所有选中的行(即选中
复选框的行)都位于顶部。所以我把这个函数叫做:

dataGridView.Sort(dataGridView.Columns["Select"], ListSortDirection.Descending);

它就像一个符咒。唯一的问题是,从这一点开始,
DataGridView
将在这些值更改时自动重新排序。这会导致混乱的行为,我想停止这种行为。我怎样才能告诉
DataGridView
,好了,伙计,你现在已经排序了,谢谢,现在让它保持原样,直到我再次调用排序函数为止?

它没有显示在代码段中,但是列的
SortMode
属性是否设置为
自动
?尝试将其更改为
不可排序
编程

dataGridView.Columns["Select"].SortMode = DataGridViewColumnSortMode.NotSortable;

简单的解决方案是“重新加载”视图的内容!我从未将其设置为任何特定的值,但在执行并检查值时,默认情况下它似乎是不可排序的。我已经尝试将其更改为编程模式,但这似乎根本没有改变行为。但是在设置排序后,它仍然不可排序吗?如果您没有设置列的排序模式,您能否定义“在某个点上,我想对DataGridView进行排序”的含义?什么触发了“某个时刻”?
dataGridView.Columns["Select"].SortMode = DataGridViewColumnSortMode.NotSortable;