如何" unsort"一个DataGridView

时间:2014-04-09 14:12:52

标签: c# datagridview

我的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添加checkbox列。 CellMouseClick的{​​{1}}处理程序看起来像这样(最简单的形式):

DataGridView

现在,在某些时候我想对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,好伙伴,你现在要排序了,谢谢,现在保持原样,直到我再次调用sort函数?

1 个答案:

答案 0 :(得分:1)

它没有显示在代码段中,但列的SortMode属性设置为Automatic?尝试将其更改为NotSortableProgrammatic

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