Сортировка представления данных по щелчку заголовка с использованием средства сравнения строк linq - PullRequest
0 голосов
/ 12 сентября 2018

Есть DataGridView, в котором я пытаюсь реализовать сортировку по щелчку заголовка. используя 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;`

1 Ответ

0 голосов
/ 12 сентября 2018

Попробуйте:

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();
}

вместо этого. Если объект не может быть приведен к типу с помощью безопасной инструкции cast as, он вернет значение null, что означает, что он ничего не сортирует.

...