我的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函数?
答案 0 :(得分:1)
它没有显示在代码段中,但列的SortMode
属性设置为Automatic
?尝试将其更改为NotSortable
或Programmatic
:
dataGridView.Columns["Select"].SortMode = DataGridViewColumnSortMode.NotSortable;