Datagridview 按 header 单击排序,使用 linq 字符串比较
Datagrid view sort on header click, using linq string comparer
有一个 DataGridView,我试图在其上实现 header 单击时的排序。
使用 linq 我尝试了以下方法但无法排序。你能指导我哪里会出错吗
` var param = DGV.Columns[e.ColumnIndex].DataPropertyName;
var propertyInfo = typeof(EditItem).GetProperty(param);
IEnumerable<object> Items;
Items= ObjectX.BindingList();
if (so == SortOrder.Ascending)
{
DGV.DataSource = Items.OrderBy(x => propertyInfo.GetValue(x, null) as String, StringComparer.OrdinalIgnoreCase).ToList();
}
else
{
DGV.DataSource = Items.OrderByDescending(x => propertyInfo.GetValue(x, null) as String, StringComparer.OrdinalIgnoreCase).ToList();
}
grid.Columns[e.ColumnIndex].HeaderCell.SortGlyphDirection = so;`
尝试:
if (so == SortOrder.Ascending)
{
DGV.DataSource = Items.OrderBy(x => propertyInfo.GetValue(x, null).ToString(), StringComparer.OrdinalIgnoreCase).ToList();
}
else
{
DGV.DataSource = Items.OrderByDescending(x => propertyInfo.GetValue(x, null).ToString(), StringComparer.OrdinalIgnoreCase).ToList();
}
相反。如果对象无法使用安全转换 as
语句转换为类型,它将 return 为 null,这意味着它不会对任何内容进行排序。
有一个 DataGridView,我试图在其上实现 header 单击时的排序。 使用 linq 我尝试了以下方法但无法排序。你能指导我哪里会出错吗
` var param = DGV.Columns[e.ColumnIndex].DataPropertyName;
var propertyInfo = typeof(EditItem).GetProperty(param);
IEnumerable<object> Items;
Items= ObjectX.BindingList();
if (so == SortOrder.Ascending)
{
DGV.DataSource = Items.OrderBy(x => propertyInfo.GetValue(x, null) as String, StringComparer.OrdinalIgnoreCase).ToList();
}
else
{
DGV.DataSource = Items.OrderByDescending(x => propertyInfo.GetValue(x, null) as String, StringComparer.OrdinalIgnoreCase).ToList();
}
grid.Columns[e.ColumnIndex].HeaderCell.SortGlyphDirection = so;`
尝试:
if (so == SortOrder.Ascending)
{
DGV.DataSource = Items.OrderBy(x => propertyInfo.GetValue(x, null).ToString(), StringComparer.OrdinalIgnoreCase).ToList();
}
else
{
DGV.DataSource = Items.OrderByDescending(x => propertyInfo.GetValue(x, null).ToString(), StringComparer.OrdinalIgnoreCase).ToList();
}
相反。如果对象无法使用安全转换 as
语句转换为类型,它将 return 为 null,这意味着它不会对任何内容进行排序。