【发布时间】:2011-12-12 22:50:41
【问题描述】:
我想对数据网格视图进行排序。当用户从此事件 CellValueChanged 对数据网格进行一些更改时。 在 CellValueChanged 完成后,应根据该列对 datagridview 进行排序。我已将数据网格与列表绑定。
【问题讨论】:
标签: c# winforms datagridview
我想对数据网格视图进行排序。当用户从此事件 CellValueChanged 对数据网格进行一些更改时。 在 CellValueChanged 完成后,应根据该列对 datagridview 进行排序。我已将数据网格与列表绑定。
【问题讨论】:
标签: c# winforms datagridview
您可以使用从DataGridViewCellEventArgs 到sort 的ColumnIndex 属性
public Form1()
{
InitializeComponent();
dataGridView1.CellValueChanged +=new DataGridViewCellEventHandler(dataGridView1_CellValueChanged);
DataTable dt = new DataTable();
dt.Columns.Add(new DataColumn("col1"));
dt.Columns.Add(new DataColumn("col2"));
dt.Columns.Add(new DataColumn("col3"));
var r1 = dt.NewRow();
r1["col1"] = "a1";
r1["col2"] = "b1";
r1["col3"] = "c1";
var r2 = dt.NewRow();
r2["col1"] = "a2";
r2["col2"] = "b2";
r2["col3"] = "c2";
var r3 = dt.NewRow();
r3["col1"] = "a3";
r3["col2"] = "b3";
r3["col3"] = "c3";
dt.Rows.Add(r1);
dt.Rows.Add(r2);
dt.Rows.Add(r3);
BindingSource bs = new BindingSource();
bs.DataSource = dt;
dataGridView1.DataSource = bs;
}
private void dataGridView1_CellValueChanged(object sender, DataGridViewCellEventArgs e)
{
var dataGrid = (DataGridView)sender;
var dataGridColumn = dataGrid.Columns[e.ColumnIndex];
dataGrid.Sort(dataGridColumn, ListSortDirection.Ascending);
}
【讨论】:
DataGridView 正在尝试对集合本身进行排序,这似乎无法排序。你的DataGridView.DataSource是什么类型的?