我有一个数据绑定的DataGridView,我试图使用IComparer进行排序。
当我尝试应用我的排序时,我收到此错误:
DataGridView控件是数据绑定的。控件无法使用比较器执行排序操作。
我的排序技术基于this link。
仅供参考我试图通过使用其标记值来比较位图。
public int Compare(object x, object y)
{
DataGridViewRow DataGridViewRow1 = (DataGridViewRow)x;
DataGridViewRow DataGridViewRow2 = (DataGridViewRow)y;
// Try to sort based on the tag
int CompareResult = System.String.Compare(
DataGridViewRow1.Cells[1].Tag.ToString(),
DataGridViewRow2.Cells[1].Tag.ToString());
return CompareResult * sortOrderModifier;
}
答案 0 :(得分:2)
据我所知,数据绑定DatagridView无法使用链接文章中显示的方法进行排序。
您要做的是对基础容器进行排序。如果您使用的是DataTable,则无法直接对其进行排序。
您可以使用Linq的OrderBy并将其传递给您的自定义比较器。之后,在linq查询上调用AsDataView()并将DataGridView绑定到此DataView。
这样的事情:
RowComparer comp = new RowComparer();
var query = northwindDataSet.Customers.AsEnumerable().OrderBy(q => q, comp);
DataView dv = query.AsDataView();
customersBindingSource.DataSource = dv;
请注意,我在此示例中使用的是DataTable和BindingSource,但您应该明白这一点: - )
希望这有帮助