Datagrid view sort on header click, using linq string comparer
Datagrid view sort on header click, using linq string comparer
Have a DataGridView on which I am trying to implement sorting on header click.
using linq I tried the following approach but unable to sort. Can you please guide me where It would have gone wrong
` 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;`
as String
null
ToString
@TimSchmelter : Yes are right.ToString() worked perfecly.Thanks a million :)
– CuriousExtreme
Sep 12 '18 at 16:35
1 Answer
1
Try:
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();
instead. If an object is unable to be cast to the type with a safe cast as
statement, it will return null, which means it'll sort nothing.
as
Thanks for contributing an answer to Stack Overflow!
But avoid …
To learn more, see our tips on writing great answers.
Required, but never shown
Required, but never shown
By clicking "Post Your Answer", you acknowledge that you have read our updated terms of service, privacy policy and cookie policy, and that your continued use of the website is subject to these policies.
Maybe
as String
returnsnull
because it's not a string. You could useToString
– Rango
Sep 12 '18 at 16:14