排序 DataGridView ComboBox 值

问题描述

我一直在尝试通过循环对我当前添加到组合框单元格的一些值进行排序,并且我将排序与数据视图一起使用,但这只是对值的 1 个数字进行排序,而没有考虑其余部分的数字。

示例代码

1

结果:

2

我想要获得的是以下示例:1、10、100、200,而不是 1、11、110、2、20、23、3 等等。如果有人有任何想法。

谢谢

解决方法

您可以使用 LINQ:

DataTable sortedByValue = sortedDT.AsEnumerable()
                   .OrderBy(r=> r.Field<decimal>("MATERIALPROFILE"))
                   .CopyToDataTable();
,

您可以使用 LINQ 对其进行排序并获取“MATERIALPROFILE”列表。

这是一个设置组合框数据dousrce的简单演示。

List<decimal> datasource = dt.AsEnumerable()
    .OrderBy(r => r.Field<decimal>("MATERIALPROFILE"))
    .Select(r => r.Field<decimal>("MATERIALPROFILE"))
    .ToList();


DataGridViewComboBoxColumn combo = new DataGridViewComboBoxColumn();
combo.DataSource = datasource;

dataGridView1.Columns.Add(combo);

更新:

修改 OrderBy 子句,例如:

.OrderBy(r => Convert.ToInt32(r.Field<string>("FieldName").Split('x')[0].Trim()))