【发布时间】:2013-11-10 00:12:18
【问题描述】:
我将DataTable 绑定为DataSource 的DataGridView。我为所有DataGridViewColumn 启用了SortMode 属性到Automatic。但是,当我在 DataGridView 上进行排序时,排序更改并未反映在底层 DataSource 中,即 DataTable。
例如:
DataTable table = new DataTable();
table.Columns.Add("Name");
table.Columns.Add("Age", typeof(int));
table.Rows.Add("Alex", 27);
table.Rows.Add("Jack", 65);
table.Rows.Add("Bill", 22);
dataGridView1.DataSource = table;
现在,如果我要获得如下所示的选定行,它将始终返回 DataTable 中 0 索引处的行即使在排序后也是Alex, 27。
DataRow newRow = table.NewRow();
newRow.ItemArray = table.Rows[dataGridView1.Rows.IndexOf(dataGridView1.SelectedRows[0])].ItemArray.Clone() as object[];
有人可以建议我应该如何处理这种情况吗?
【问题讨论】:
-
排序只是在 UI 中进行。为什么要对底层数据源进行排序?您的数据源只保存您的数据,如果您想按特定顺序访问它,您可以为此使用索引或视图,当然最终用户认为排序可能不会很有趣。
-
Gridview排序时为什么要排序反映在数据表中?
-
可以在后面的代码中对数据源进行排序。
-
请在数据表绑定到 DataGridView 之前显示一些代码,特别是您的查询。
-
如果你可以选择我真的会推荐 WPF,在这种事情上它会更好。
标签: c# winforms sorting datagridview datatable