我在绑定到数据表的datagridview上实现多列排序。 datagridview对其中一列使用组合框,其中display member是另一个表的字符串,Value成员是提供外键的整数。在单独的datagridview中,我可以通过ICompare和FormattedValue属性轻松地使用RowComparer进行排序。但是,主数据网格视图已绑定,并且不允许我使用该接口。因此,我尝试使用排序字符串对底层数据进行排序,如下所示,但是可以对查找字段进行排序,而不是ID字段。有什么想法吗?
在表格上:
private void customSortToolStripMenuItem_Click(object sender, EventArgs e)
{
string sortString = "SectionID ASC, Shift DESC"; //I want the name not ID
if (sortString != "")
{
DataView view = localDataSet.myBaseTable.DefaultView;
view.Sort = sortString;
tableBindingSource.DataSource = view;
}
}
答案 0 :(得分:0)
也许LINQ会为您提供更好的访问权限
DataTable dt = new DataTable();
var result = dt.AsEnumerable()
.OrderBy(row => row.Field<decimal>("ColumnNameA"))
.OrderByDescending(row => row.Field<decimal>("ColumnNameB"));
我希望这会有所帮助。