ICollectionView.SortDescriptions sort does not work if underlying DataTable has zero rows
- by BigBlondeViking
We have a WPF app that has a DataGrid inside a ListView.
private DataTable table_;
We do a bunch or dynamic column generation ( depending on the report we are showing )
We then do the a query and fill the DataTable row by row, this query may or may not have data.( not the problem, an empty grid is expected )
We set the ListView's ItemsSource to the DefaultView of the DataTable.
lv.ItemsSource = table_.DefaultView;
We then (looking at the user's pass usage of the app, set the sort on the column)
Sort Method below:
private void Sort(string sortBy, ListSortDirection direction)
{
ICollectionView dataView = CollectionViewSource.GetDefaultView(lv.ItemsSource);
dataView.SortDescriptions.Clear();
var sd = new SortDescription(sortBy, direction);
dataView.SortDescriptions.Add(sd);
dataView.Refresh();
}
In the Zero DataTable rows scenario, the sort does not "hold"? and if we dynamically add rows they will not be in sorted order.
If the DataTable has at-least 1 row when the sort is applied, and we dynamically add rows to the DataTable, the rows com in sorted correctly.
I have built a standalone app that replicate this...
It is an annoyance and I can add a check to see if the DataTable was empty, and re-apply the sort...
Anyone know whats going on here, and am I doing something wrong?
FYI: What we based this off if comes from the MSDN as well: http://msdn.microsoft.com/en-us/library/ms745786.aspx