diff --git a/src/BootstrapBlazor/Components/Table/Table.razor.Edit.cs b/src/BootstrapBlazor/Components/Table/Table.razor.Edit.cs index 905f90880574b9618da9128c3a70826412d22ee7..6bc16e57c7440f381d81f06b85129ab76e74fcc1 100644 --- a/src/BootstrapBlazor/Components/Table/Table.razor.Edit.cs +++ b/src/BootstrapBlazor/Components/Table/Table.razor.Edit.cs @@ -472,10 +472,7 @@ public partial class Table ProcessSelectedRows(); // 分页情况下内部不做处理防止页码错乱 - if (!queryOption.IsPage) - { - ProcessPageData(queryData, queryOption); - } + ProcessData(queryData, queryOption); if (IsTree) { @@ -515,7 +512,7 @@ public partial class Table SelectedRows = rows; } - void ProcessPageData(QueryData queryData, QueryPageOptions queryOption) + void ProcessData(QueryData queryData, QueryPageOptions queryOption) { var filtered = queryData.IsFiltered; var sorted = queryData.IsSorted; diff --git a/src/BootstrapBlazor/Components/Table/Table.razor.Sort.cs b/src/BootstrapBlazor/Components/Table/Table.razor.Sort.cs index 8187ef0e22527c1a6e8ce55d3371ce68c9cf871b..4279e24b8096e90a5c0282a7d169fabc4f2b3f16 100644 --- a/src/BootstrapBlazor/Components/Table/Table.razor.Sort.cs +++ b/src/BootstrapBlazor/Components/Table/Table.razor.Sort.cs @@ -53,7 +53,7 @@ public partial class Table /// 获得/设置 内部表头排序时回调方法 /// [NotNull] - protected Func? IntenralOnSortAsync { get; set; } + protected Func? InternalOnSortAsync { get; set; } /// /// 点击列进行排序方法 @@ -76,7 +76,7 @@ public partial class Table SortName = col.GetFieldName(); // 通知 Table 组件刷新数据 - await IntenralOnSortAsync(SortName, SortOrder); + await InternalOnSortAsync(SortName, SortOrder); }; /// diff --git a/src/BootstrapBlazor/Components/Table/Table.razor.cs b/src/BootstrapBlazor/Components/Table/Table.razor.cs index ee12fefe7130ba5c5ba186b3f7653555f2921501..69e10d16c52e80b3a9f5f703a7704a30841ac576 100644 --- a/src/BootstrapBlazor/Components/Table/Table.razor.cs +++ b/src/BootstrapBlazor/Components/Table/Table.razor.cs @@ -669,7 +669,7 @@ public partial class Table : BootstrapComponentBase, IDisposable, ITable Interop = new JSInterop>(JSRuntime); // 设置 OnSort 回调方法 - IntenralOnSortAsync = async (sortName, sortOrder) => + InternalOnSortAsync = async (sortName, sortOrder) => { // 调用 OnSort 回调方法 if (OnSort != null) diff --git a/test/UnitTest/Components/TableTest.cs b/test/UnitTest/Components/TableTest.cs index 7ae1652fabf5f41935080438821c2cdbdb95e842..8089816ab589a54309af7cdf1fd486e1e6d5b003 100644 --- a/test/UnitTest/Components/TableTest.cs +++ b/test/UnitTest/Components/TableTest.cs @@ -1653,6 +1653,42 @@ public class TableTest : TableTestBase await cut.InvokeAsync(() => table.Instance.QueryAsync()); } + [Fact] + public async Task OnSort_Ok() + { + // 外部未排序,组件内部自动排序 + var localizer = Context.Services.GetRequiredService>(); + var cut = Context.RenderComponent(pb => + { + pb.AddChildContent>(pb => + { + pb.Add(a => a.RenderMode, TableRenderMode.Table); + pb.Add(a => a.OnQueryAsync, OnQueryAsync(localizer, isSorted: false)); + pb.Add(a => a.TableColumns, foo => builder => + { + builder.OpenComponent>(0); + builder.AddAttribute(1, "Field", "Name"); + builder.AddAttribute(2, "FieldExpression", Utility.GenerateValueExpression(foo, "Name", typeof(string))); + builder.AddAttribute(3, "Sortable", true); + builder.AddAttribute(4, "DefaultSort", true); + builder.AddAttribute(4, "DefaultSortOrder", SortOrder.Desc); + builder.CloseComponent(); + }); + pb.Add(a => a.SortIcon, "fa fa-sort"); + }); + }); + + var name = cut.Find("td").TextContent; + Assert.Contains("0005", name); + + // click sort + var sort = cut.Find("th"); + await cut.InvokeAsync(() => sort.Click()); + + name = name = cut.Find("td").TextContent; + Assert.Contains("0001", name); + } + [Theory] [InlineData(true)] [InlineData(false)]