(1)对于排序问题,需要在数据绑定时设置数据源的排序方式,例如:
dataGridView1.DataSource = dataView; dataGridView1.Sort(dataGridView1.Columns[0], ListSortDirection.Ascending);
这会将数据源按照第1列的升序排序。如果需要自定义排序方式,可以实现DataGridView的SortCompare事件,例如:
private void dataGridView1_SortCompare(object sender, DataGridViewSortCompareEventArgs e) { if (e.Column.Index == 0) { e.SortResult = Convert.ToInt32(e.CellValue1) - Convert.ToInt32(e.CellValue2); e.Handled = true; } }
这个事件会在排序过程中比较数据,可以根据需要调整排序顺序。
(2)对于复选框问题,需要在DataGridView里创建一个CheckBox列,然后在CellFormatting事件里设置CheckBox的值,例如:
private void dataGridView1_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e) { if (e.ColumnIndex == 1) { DataGridViewCheckBoxCell chk = (DataGridViewCheckBoxCell)this.dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex]; chk.Value = e.Value; } }
这个事件会在渲染单元格时设置CheckBox列的值,使选中状态正确显示。需要注意的是,如果数据源里包含Boolean类型的数据,可以不用创建CheckBox列,直接渲染Boolean类型的单元格即可。