C# DataGridView(部分)数据绑定自定义排序
我有一个数据网格,我必须用混合的C# DataGridView(部分)数据绑定自定义排序,c#,sorting,datagridview,C#,Sorting,Datagridview,我有一个数据网格,我必须用混合的 使用代码动态创建的列 从查询中检索数据的列(动态、自然) 数据表 using (SqlDataReader dr = cmd.ExecuteReader()) { table.Load(dr); // Insert row number column DataGridViewTextBoxColumn rowColumn = new DataGridViewTextBoxColumn() { HeaderTe
- 使用代码动态创建的列
- 从查询中检索数据的列(动态、自然)
using (SqlDataReader dr = cmd.ExecuteReader())
{
table.Load(dr);
// Insert row number column
DataGridViewTextBoxColumn rowColumn = new DataGridViewTextBoxColumn()
{
HeaderText = "Row",
Width = 40,
ReadOnly = true,
Frozen = true
};
dgv.Columns.Insert(0, rowColumn);
// Insert grouping column
DataGridViewComboBoxColumn groupColumn = new DataGridViewComboBoxColumn()
{
HeaderText = "Grouping",
Width = 70,
DisplayStyle = DataGridViewComboBoxDisplayStyle.ComboBox,
FlatStyle = System.Windows.Forms.FlatStyle.Flat,
Frozen = true
};
groupColumn.Items.AddRange(new object[] { "-", "Group 1", "Group 2"});
dgv.Columns.Insert(1, groupColumn);
// Populate row & grouping columns
.................
dgv.DataSource = table;
}
DataGridView充满了所需的数据,用户可以更改他想要的任何内容。最后,我需要根据已编辑值(包括已创建值和数据绑定值)的列的修改内容对行进行排序:我如何做到这一点 无法使用Sort()对数据绑定的DataGridView进行排序,也不能使用DataTable的排序方法(或可以放在中间的DataView),因为我有额外的数据。
我被这个问题困扰了…在表中添加列,而不是在datagridview中添加列。 这将使列数据绑定,而不是“手动”创建。 然后,要将该列转换为组合框列,请查看此SO链接:
那么为什么不将列添加到表中而不是datagridview中呢?因此,当您绑定表时,您将获得额外的列。如果您迫切需要一个下拉列,只需在数据绑定后转换该列即可。@WozzeC:谢谢您的建议,我正在尝试重构我的代码,并且部分工作正常。如何将表列转换为
DataGridViewComboBoxColumn
?不幸的是我需要。。。看看这个。@WozzeC:我在那里看到了你的答案,但该列是由代码生成的(和我的一样),不能用于排序!!您知道如何将DataGridViewTextColumn(从DataTable加载数据时自动生成)“转换”为DataGridViewComboxColumn,而无需删除并重新创建它吗?该示例中没有创建任何列?它在以前是文本框的位置创建一个单元格。您只需执行循环并替换该列的所有单元格。您的列仍然应该是数据绑定的,因为它是与datatable一起添加的。你只是改变了改变它的方式。然而,我现在没有可能测试这个,所以我可能在这个问题上是错的。