From 54db76df59de22a65c3dc8094886d5e937602b66 Mon Sep 17 00:00:00 2001 From: Argo-Cloud Date: Tue, 30 Mar 2021 12:24:53 +0800 Subject: [PATCH 1/3] chore: update eidtorconfig file --- .editorconfig | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.editorconfig b/.editorconfig index 04875a7e0..4a2590edd 100644 --- a/.editorconfig +++ b/.editorconfig @@ -64,8 +64,8 @@ dotnet_style_explicit_tuple_names = true:suggestion dotnet_style_null_propagation = true:suggestion dotnet_style_coalesce_expression = true:suggestion dotnet_style_prefer_is_null_check_over_reference_equality_method = true:silent -dotnet_prefer_inferred_tuple_names = true:suggestion -dotnet_prefer_inferred_anonymous_type_member_names = true:suggestion +dotnet_style_prefer_inferred_tuple_names = true:suggestion +dotnet_style_prefer_inferred_anonymous_type_member_names = true:suggestion dotnet_style_prefer_auto_properties = true:silent dotnet_style_prefer_conditional_expression_over_assignment = true:silent dotnet_style_prefer_conditional_expression_over_return = true:silent -- Gitee From 010580df3824e78d961bc7d1372f1ee8f5eff522 Mon Sep 17 00:00:00 2001 From: Argo-Cloud Date: Tue, 30 Mar 2021 12:25:09 +0800 Subject: [PATCH 2/3] chore: update nuget package source --- NuGet.Config | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/NuGet.Config b/NuGet.Config index 93ead7f9a..e8e354d1f 100644 --- a/NuGet.Config +++ b/NuGet.Config @@ -1,7 +1,8 @@ - + + -- Gitee From 6449ea3f1e628f6f9abe2bc8a6c409b090a551c1 Mon Sep 17 00:00:00 2001 From: Argo-Cloud Date: Tue, 30 Mar 2021 12:52:59 +0800 Subject: [PATCH 3/3] =?UTF-8?q?docs:=20=E6=9B=B4=E6=96=B0=E5=88=97?= =?UTF-8?q?=E7=A4=BA=E4=BE=8B=E6=96=87=E6=A1=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Pages/Samples/Table/TablesColumn.razor | 4 +- ...lesBaseColumn.cs => TablesColumn.razor.cs} | 84 ++++++++++++++++--- 2 files changed, 75 insertions(+), 13 deletions(-) rename src/BootstrapBlazor.Shared/Pages/Samples/Table/{TablesBaseColumn.cs => TablesColumn.razor.cs} (40%) diff --git a/src/BootstrapBlazor.Shared/Pages/Samples/Table/TablesColumn.razor b/src/BootstrapBlazor.Shared/Pages/Samples/Table/TablesColumn.razor index 7819c8ef8..450a3b756 100644 --- a/src/BootstrapBlazor.Shared/Pages/Samples/Table/TablesColumn.razor +++ b/src/BootstrapBlazor.Shared/Pages/Samples/Table/TablesColumn.razor @@ -1,6 +1,4 @@ -@using Foo = BootstrapBlazor.Shared.Pages.Components.Foo -@inherits TablesBaseColumn -@page "/tables/column" +@page "/tables/column"

Table 表格

diff --git a/src/BootstrapBlazor.Shared/Pages/Samples/Table/TablesBaseColumn.cs b/src/BootstrapBlazor.Shared/Pages/Samples/Table/TablesColumn.razor.cs similarity index 40% rename from src/BootstrapBlazor.Shared/Pages/Samples/Table/TablesBaseColumn.cs rename to src/BootstrapBlazor.Shared/Pages/Samples/Table/TablesColumn.razor.cs index 8d93032d8..30cdee718 100644 --- a/src/BootstrapBlazor.Shared/Pages/Samples/Table/TablesBaseColumn.cs +++ b/src/BootstrapBlazor.Shared/Pages/Samples/Table/TablesColumn.razor.cs @@ -4,62 +4,126 @@ using BootstrapBlazor.Components; using BootstrapBlazor.Shared.Pages.Components; +using Microsoft.AspNetCore.Components; +using Microsoft.Extensions.Localization; +using System; +using System.Collections.Concurrent; using System.Collections.Generic; +using System.Diagnostics.CodeAnalysis; using System.Linq; using System.Threading.Tasks; -namespace BootstrapBlazor.Shared.Pages +namespace BootstrapBlazor.Shared.Pages.Table { /// - /// + /// Table 组件列属性示例代码 /// - public abstract class TablesBaseColumn : TablesBaseQuery + public partial class TablesColumn { + private static readonly ConcurrentDictionary, string, SortOrder, IEnumerable>> SortLambdaCache = new(); + + [NotNull] + private List? Items { get; set; } + + [Inject] + [NotNull] + private IStringLocalizer? Localizer { get; set; } + + [Inject] + [NotNull] + private ToastService? ToastService { get; set; } + private static IEnumerable PageItemsSource => new int[] { 4, 10, 20 }; + + /// + /// OnInitialized 方法 + /// + protected override void OnInitialized() + { + base.OnInitialized(); + + Items = Foo.GenerateFoo(Localizer); + } + /// /// /// /// /// - protected Task IntFormatter(object? d) + protected static Task IntFormatter(object? d) { var data = (int?)d; return Task.FromResult(data?.ToString("0.00") ?? ""); } + private Task> OnQueryAsync(QueryPageOptions options) + { + IEnumerable items = Items; + + // 过滤 + var isFiltered = false; + if (options.Filters.Any()) + { + items = items.Where(options.Filters.GetFilterFunc()); + isFiltered = true; + } + + // 排序 + var isSorted = false; + if (!string.IsNullOrEmpty(options.SortName)) + { + var invoker = SortLambdaCache.GetOrAdd(typeof(Foo), key => LambdaExtensions.GetSortLambda().Compile()); + items = invoker(items, options.SortName, options.SortOrder); + isSorted = true; + } + + // 设置记录总数 + var total = items.Count(); + + // 内存分页 + items = items.Skip((options.PageIndex - 1) * options.PageItems).Take(options.PageItems).ToList(); + + return Task.FromResult(new QueryData() + { + Items = items, + TotalCount = total, + IsSorted = isSorted, + IsFiltered = isFiltered, + IsSearch = true + }); + } + /// /// /// /// - protected Task CustomerButton(IEnumerable items) + protected async Task CustomerButton(IEnumerable items) { var cate = ToastCategory.Information; var title = "自定义按钮处理方法"; var content = $"通过不同的函数区分按钮处理逻辑,参数 Items 为 Table 组件中选中的行数据集合,当前选择数据 {items.Count()} 条"; - ToastService?.Show(new ToastOption() + await ToastService.Show(new ToastOption() { Category = cate, Title = title, Content = content }); - return Task.CompletedTask; } /// /// /// /// - protected Task OnRowButtonClick(Foo item) + protected async Task OnRowButtonClick(Foo item) { var cate = ToastCategory.Success; var title = "行内按钮处理方法"; var content = "通过不同的函数区分按钮处理逻辑,参数 Item 为当前行数据"; - ToastService?.Show(new ToastOption() + await ToastService.Show(new ToastOption() { Category = cate, Title = title, Content = content }); - return Task.CompletedTask; } } } -- Gitee