Skip to content

Commit

Permalink
Merge pull request #12 from CoreBTS/feature/grid-multi-orderby
Browse files Browse the repository at this point in the history
FIX:  Programmatic OrderByDescending doesn't work for dotted properties
  • Loading branch information
bengavin authored Nov 16, 2023
2 parents 287c066 + ec320fd commit 0dcbfe5
Showing 1 changed file with 43 additions and 9 deletions.
52 changes: 43 additions & 9 deletions Radzen.Blazor/RadzenDataGrid.razor.cs
Original file line number Diff line number Diff line change
Expand Up @@ -2941,10 +2941,8 @@ void SortsCollectionChanged(object sender, NotifyCollectionChangedEventArgs args
/// Orders the DataGrid by property name.
/// </summary>
/// <param name="property">The property name.</param>
public void OrderBy(string property)
public void OrderBy(string property, params string[] otherProperties)
{
var p = IsOData() ? property.Replace('.', '/') : PropertyAccess.GetProperty(property);

var column = allColumns.ToList().Where(c => c.GetSortProperty() == property).FirstOrDefault();

if (column != null)
Expand All @@ -2954,6 +2952,20 @@ public void OrderBy(string property)
SaveSettings();
}

if (AllowMultiColumnSorting)
{
foreach (var otherProperty in otherProperties)
{
column = allColumns.ToList().Where(c => c.GetSortProperty() == otherProperty).FirstOrDefault();

if (column != null)
{
SetColumnSortOrder(column);
Sort.InvokeAsync(new DataGridColumnSortEventArgs<TItem>() { Column = column, SortOrder = column.GetSortOrder() });
}
}
}

if (LoadData.HasDelegate && IsVirtualizationAllowed())
{
Data = null;
Expand All @@ -2962,18 +2974,20 @@ public void OrderBy(string property)
#endif
}

InvokeAsync(ReloadInternal);
InvokeAsync(async () =>
{
await ChangeState();
await ReloadInternal();
});
}

/// <summary>
/// Orders descending the DataGrid by property name.
/// </summary>
/// <param name="property">The property name.</param>
public void OrderByDescending(string property)
public void OrderByDescending(string property, params string[] otherProperties)
{
var p = IsOData() ? property.Replace('.', '/') : PropertyAccess.GetProperty(property);

var column = allColumns.ToList().Where(c => c.GetSortProperty() == p).FirstOrDefault();
var column = allColumns.ToList().Where(c => c.GetSortProperty() == property).FirstOrDefault();

if (column != null)
{
Expand All @@ -2984,6 +2998,22 @@ public void OrderByDescending(string property)
SaveSettings();
}

if (AllowMultiColumnSorting)
{
foreach (var otherProperty in otherProperties)
{
column = allColumns.ToList().Where(c => c.GetSortProperty() == otherProperty).FirstOrDefault();

if (column != null)
{
column.SetSortOrder(SortOrder.Ascending);
SetColumnSortOrder(column);

Sort.InvokeAsync(new DataGridColumnSortEventArgs<TItem>() { Column = column, SortOrder = column.GetSortOrder() });
}
}
}

if (LoadData.HasDelegate && IsVirtualizationAllowed())
{
Data = null;
Expand All @@ -2992,7 +3022,11 @@ public void OrderByDescending(string property)
#endif
}

InvokeAsync(ReloadInternal);
InvokeAsync(async () =>
{
await ChangeState();
await ReloadInternal();
});
}

/// <inheritdoc />
Expand Down

0 comments on commit 0dcbfe5

Please sign in to comment.