mirror of
https://github.com/radzenhq/radzen-blazor.git
synced 2026-02-04 05:35:44 +00:00
Revert "Fixed datagrid sort issues due to duplicate sortDescriptor lists. (#1996)"
This reverts commit 57f1417d4c.
This commit is contained in:
@@ -5,7 +5,7 @@ using Microsoft.AspNetCore.Components.Rendering;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Threading.Tasks;
|
||||
using System.Text.RegularExpressions;
|
||||
using Xunit;
|
||||
|
||||
namespace Radzen.Blazor.Tests
|
||||
@@ -362,82 +362,6 @@ namespace Radzen.Blazor.Tests
|
||||
component.Find(".rz-sortable-column").FirstElementChild.Click();
|
||||
|
||||
Assert.Contains(@$"rzi-sort-desc", component.Markup);
|
||||
|
||||
component.Find(".rz-sortable-column").FirstElementChild.Click();
|
||||
|
||||
Assert.DoesNotContain(@$"rzi-sort-desc", component.Markup);
|
||||
Assert.DoesNotContain(@$"rzi-sort-asc", component.Markup);
|
||||
}
|
||||
|
||||
|
||||
// clear Sorting tests
|
||||
[Fact]
|
||||
public void DataGrid_Renders_ClearSorting()
|
||||
{
|
||||
using var ctx = new TestContext();
|
||||
ctx.JSInterop.Mode = JSRuntimeMode.Loose;
|
||||
ctx.JSInterop.SetupModule("_content/Radzen.Blazor/Radzen.Blazor.js");
|
||||
|
||||
var component = ctx.RenderComponent<RadzenDataGrid<dynamic>>(parameterBuilder =>
|
||||
{
|
||||
parameterBuilder.Add<IEnumerable<dynamic>>(p => p.Data, Enumerable.Range(0, 100).Select(i => new { Id = i }));
|
||||
parameterBuilder.Add<RenderFragment>(p => p.Columns, builder =>
|
||||
{
|
||||
builder.OpenComponent(0, typeof(RadzenDataGridColumn<dynamic>));
|
||||
builder.AddAttribute(1, "Property", "Id");
|
||||
builder.AddAttribute(2, "Title", "Id");
|
||||
builder.CloseComponent();
|
||||
});
|
||||
parameterBuilder.Add<bool>(p => p.AllowSorting, true);
|
||||
});
|
||||
|
||||
component.Find(".rz-sortable-column").FirstElementChild.Click();
|
||||
Assert.Contains(@$"rzi-sort-asc", component.Markup);
|
||||
|
||||
component.Instance.Sorts.Clear();
|
||||
|
||||
Assert.DoesNotContain(@$"rzi-sort-desc", component.Markup);
|
||||
Assert.DoesNotContain(@$"rzi-sort-asc", component.Markup);
|
||||
}
|
||||
|
||||
// sorting with load data event test.
|
||||
[Fact]
|
||||
public void DataGrid_Renders_LoadDataWithOrdering()
|
||||
{
|
||||
using var ctx = new TestContext();
|
||||
ctx.JSInterop.Mode = JSRuntimeMode.Loose;
|
||||
ctx.JSInterop.SetupModule("_content/Radzen.Blazor/Radzen.Blazor.js");
|
||||
|
||||
List<LoadDataArgs> loadDataArgs = [];
|
||||
|
||||
var component = ctx.RenderComponent<RadzenDataGrid<dynamic>>(parameterBuilder =>
|
||||
{
|
||||
parameterBuilder.Add<IEnumerable<dynamic>>(p => p.Data, Enumerable.Range(0, 100).Select(i => new { Id = i }));
|
||||
parameterBuilder.Add<RenderFragment>(p => p.Columns, builder =>
|
||||
{
|
||||
builder.OpenComponent(0, typeof(RadzenDataGridColumn<dynamic>));
|
||||
builder.AddAttribute(1, "Property", "Id");
|
||||
builder.AddAttribute(2, "Title", "Id");
|
||||
builder.CloseComponent();
|
||||
});
|
||||
parameterBuilder.Add<bool>(p => p.AllowSorting, true);
|
||||
parameterBuilder.Add(p => p.LoadData, args => loadDataArgs.Add(args));
|
||||
});
|
||||
|
||||
component.Find(".rz-sortable-column").FirstElementChild.Click();
|
||||
Assert.Contains(@$"rzi-sort-asc", component.Markup);
|
||||
|
||||
component.Instance.Sorts.Clear();
|
||||
component.Render();
|
||||
|
||||
Assert.DoesNotContain(@$"rzi-sort-desc", component.Markup);
|
||||
Assert.DoesNotContain(@$"rzi-sort-asc", component.Markup);
|
||||
|
||||
Assert.Equal(4, loadDataArgs.Count);
|
||||
Assert.Equal("", loadDataArgs[0].OrderBy);
|
||||
Assert.Equal("Id asc", loadDataArgs[1].OrderBy);
|
||||
Assert.Equal("Id asc", loadDataArgs[2].OrderBy);
|
||||
Assert.Equal("", loadDataArgs[3].OrderBy);
|
||||
}
|
||||
|
||||
// Paging tests
|
||||
|
||||
@@ -678,11 +678,11 @@ namespace Radzen.Blazor
|
||||
}
|
||||
}
|
||||
|
||||
var descriptor = Sorts.Where(d => d.Property == column?.GetSortProperty()).FirstOrDefault();
|
||||
var descriptor = sorts.Where(d => d.Property == column?.GetSortProperty()).FirstOrDefault();
|
||||
if (descriptor == null && column.SortOrder.HasValue)
|
||||
{
|
||||
descriptor = new SortDescriptor() { Property = column.GetSortProperty(), SortOrder = column.SortOrder.Value };
|
||||
Sorts.Add(descriptor);
|
||||
sorts.Add(descriptor);
|
||||
}
|
||||
|
||||
if (!allColumns.Contains(column))
|
||||
@@ -1685,7 +1685,7 @@ namespace Radzen.Blazor
|
||||
|
||||
internal string GetOrderBy()
|
||||
{
|
||||
return string.Join(",", Sorts.Select(d => GetSortOrderAsString(d, IsOData())));
|
||||
return string.Join(",", sorts.Select(d => GetSortOrderAsString(d, IsOData())));
|
||||
}
|
||||
|
||||
internal string GetSortOrderAsString(SortDescriptor d, bool isOData)
|
||||
@@ -2071,7 +2071,7 @@ namespace Radzen.Blazor
|
||||
c.SetVisible(null);
|
||||
});
|
||||
selectedColumns = allColumns.Where(c => c.Pickable && c.GetVisible()).ToList();
|
||||
Sorts.Clear();
|
||||
sorts.Clear();
|
||||
columns = allColumns.Where(c => c.Parent == null).ToList();
|
||||
}
|
||||
}
|
||||
@@ -2184,7 +2184,7 @@ namespace Radzen.Blazor
|
||||
.ToList();
|
||||
|
||||
Query.Filters = filters;
|
||||
Query.Sorts = Sorts.ToList();
|
||||
Query.Sorts = sorts;
|
||||
if (LoadData.HasDelegate)
|
||||
{
|
||||
await LoadData.InvokeAsync(new Radzen.LoadDataArgs()
|
||||
@@ -2194,7 +2194,7 @@ namespace Radzen.Blazor
|
||||
OrderBy = orderBy,
|
||||
Filter = IsOData() ? allColumns.ToList().ToODataFilterString<TItem>() : filterString,
|
||||
Filters = filters,
|
||||
Sorts = Sorts.ToList()
|
||||
Sorts = sorts
|
||||
});
|
||||
}
|
||||
}
|
||||
@@ -3032,46 +3032,48 @@ namespace Radzen.Blazor
|
||||
return isOData != null ? isOData.Value : false;
|
||||
}
|
||||
|
||||
internal List<SortDescriptor> sorts = new List<SortDescriptor>();
|
||||
|
||||
internal void SetColumnSortOrder(RadzenDataGridColumn<TItem> column)
|
||||
{
|
||||
var CurrentSortDescriptor = Sorts.FirstOrDefault(d => d.Property == column?.GetSortProperty());
|
||||
if (!AllowMultiColumnSorting)
|
||||
{
|
||||
foreach (var c in allColumns.ToList().Where(c => c != column))
|
||||
{
|
||||
c.SetSortOrderInternal(null);
|
||||
}
|
||||
Sorts.Clear();
|
||||
sorts.Clear();
|
||||
}
|
||||
|
||||
if (CurrentSortDescriptor == null)
|
||||
var descriptor = sorts.Where(d => d.Property == column?.GetSortProperty()).FirstOrDefault();
|
||||
if (descriptor == null)
|
||||
{
|
||||
CurrentSortDescriptor = new SortDescriptor() { Property = column.GetSortProperty() };
|
||||
descriptor = new SortDescriptor() { Property = column.GetSortProperty() };
|
||||
}
|
||||
|
||||
if (CurrentSortDescriptor.SortOrder == null)
|
||||
if (column.GetSortOrder() == null)
|
||||
{
|
||||
column.SetSortOrderInternal(SortOrder.Ascending);
|
||||
CurrentSortDescriptor.SortOrder = SortOrder.Ascending;
|
||||
descriptor.SortOrder = SortOrder.Ascending;
|
||||
}
|
||||
else if (CurrentSortDescriptor.SortOrder == SortOrder.Ascending)
|
||||
else if (column.GetSortOrder() == SortOrder.Ascending)
|
||||
{
|
||||
column.SetSortOrderInternal(SortOrder.Descending);
|
||||
CurrentSortDescriptor.SortOrder = SortOrder.Descending;
|
||||
descriptor.SortOrder = SortOrder.Descending;
|
||||
}
|
||||
else if (CurrentSortDescriptor.SortOrder == SortOrder.Descending)
|
||||
else if (column.GetSortOrder() == SortOrder.Descending)
|
||||
{
|
||||
column.SetSortOrderInternal(null);
|
||||
if (Sorts.Any(d => d.Property == column?.GetSortProperty()))
|
||||
if (sorts.Where(d => d.Property == column?.GetSortProperty()).Any())
|
||||
{
|
||||
Sorts.Remove(CurrentSortDescriptor);
|
||||
sorts.Remove(descriptor);
|
||||
}
|
||||
CurrentSortDescriptor = null;
|
||||
descriptor = null;
|
||||
}
|
||||
|
||||
if (CurrentSortDescriptor != null && !Sorts.Any(d => d.Property == column?.GetSortProperty()))
|
||||
if (descriptor != null && !sorts.Where(d => d.Property == column?.GetSortProperty()).Any())
|
||||
{
|
||||
Sorts.Add(CurrentSortDescriptor);
|
||||
sorts.Add(descriptor);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -182,7 +182,7 @@ namespace Radzen.Blazor
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
int? orderIndex;
|
||||
|
||||
/// <summary>
|
||||
@@ -764,7 +764,7 @@ namespace Radzen.Blazor
|
||||
|
||||
internal void SetSortOrder(SortOrder? order)
|
||||
{
|
||||
var descriptor = Grid.Sorts.Where(d => d.Property == GetSortProperty()).FirstOrDefault();
|
||||
var descriptor = Grid.sorts.Where(d => d.Property == GetSortProperty()).FirstOrDefault();
|
||||
if (descriptor == null)
|
||||
{
|
||||
descriptor = new SortDescriptor() { Property = GetSortProperty() };
|
||||
@@ -778,16 +778,16 @@ namespace Radzen.Blazor
|
||||
else
|
||||
{
|
||||
SetSortOrderInternal(null);
|
||||
if (Grid.Sorts.Where(d => d.Property == GetSortProperty()).Any())
|
||||
if (Grid.sorts.Where(d => d.Property == GetSortProperty()).Any())
|
||||
{
|
||||
Grid.Sorts.Remove(descriptor);
|
||||
Grid.sorts.Remove(descriptor);
|
||||
}
|
||||
descriptor = null;
|
||||
}
|
||||
|
||||
if (descriptor != null && !Grid.Sorts.Where(d => d.Property == GetSortProperty()).Any())
|
||||
if (descriptor != null && !Grid.sorts.Where(d => d.Property == GetSortProperty()).Any())
|
||||
{
|
||||
Grid.Sorts.Add(descriptor);
|
||||
Grid.sorts.Add(descriptor);
|
||||
}
|
||||
|
||||
sortOrder = new SortOrder?[] { order };
|
||||
@@ -907,10 +907,10 @@ namespace Radzen.Blazor
|
||||
|
||||
if (Grid != null)
|
||||
{
|
||||
var descriptor = Grid.Sorts.Where(d => d.Property == GetSortProperty()).FirstOrDefault();
|
||||
var descriptor = Grid.sorts.Where(d => d.Property == GetSortProperty()).FirstOrDefault();
|
||||
if (descriptor == null)
|
||||
{
|
||||
Grid.Sorts.Add(new SortDescriptor() { Property = GetSortProperty(), SortOrder = sortOrder.FirstOrDefault() });
|
||||
Grid.sorts.Add(new SortDescriptor() { Property = GetSortProperty(), SortOrder = sortOrder.FirstOrDefault() });
|
||||
Grid._view = null;
|
||||
}
|
||||
}
|
||||
@@ -1116,7 +1116,7 @@ namespace Radzen.Blazor
|
||||
|
||||
if (isFirst)
|
||||
{
|
||||
filterValue = CanSetCurrentValue(value) ? value :
|
||||
filterValue = CanSetCurrentValue(value) ? value :
|
||||
GetFilterOperator() == FilterOperator.IsEmpty || GetFilterOperator() == FilterOperator.IsNotEmpty ? string.Empty : null;
|
||||
}
|
||||
else
|
||||
@@ -1221,7 +1221,7 @@ namespace Radzen.Blazor
|
||||
/// </summary>
|
||||
/// <value>The filter operator.</value>
|
||||
[Parameter]
|
||||
public FilterOperator FilterOperator
|
||||
public FilterOperator FilterOperator
|
||||
{
|
||||
get
|
||||
{
|
||||
@@ -1505,10 +1505,10 @@ namespace Radzen.Blazor
|
||||
/// </summary>
|
||||
public int? GetSortIndex()
|
||||
{
|
||||
var descriptor = Grid.Sorts.Where(s => s.Property == GetSortProperty()).FirstOrDefault();
|
||||
var descriptor = Grid.sorts.Where(s => s.Property == GetSortProperty()).FirstOrDefault();
|
||||
if (descriptor != null)
|
||||
{
|
||||
return Grid.Sorts.IndexOf(descriptor);
|
||||
return Grid.sorts.IndexOf(descriptor);
|
||||
}
|
||||
|
||||
return null;
|
||||
|
||||
Reference in New Issue
Block a user