From d65828db371564f970c27a97b5399cf1543e87b2 Mon Sep 17 00:00:00 2001 From: Argo-Cloud Date: Tue, 6 Apr 2021 00:48:04 +0800 Subject: [PATCH 1/4] release: publish 5.0.24-beta05 --- src/BootstrapBlazor/BootstrapBlazor.csproj | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/BootstrapBlazor/BootstrapBlazor.csproj b/src/BootstrapBlazor/BootstrapBlazor.csproj index 9d0139844..94010ce77 100644 --- a/src/BootstrapBlazor/BootstrapBlazor.csproj +++ b/src/BootstrapBlazor/BootstrapBlazor.csproj @@ -3,7 +3,7 @@ true logo.png - 5.0.24-beta04 + 5.0.24-beta05 https://gitee.com/LongbowEnterprise/BootstrapBlazor/wikis -- Gitee From 698426fdb9b3b2c99fc6e859f43e984d3581e957 Mon Sep 17 00:00:00 2001 From: Argo-Cloud Date: Tue, 6 Apr 2021 01:42:51 +0800 Subject: [PATCH 2/4] =?UTF-8?q?feat:=20Display=20=E7=BB=84=E4=BB=B6?= =?UTF-8?q?=E5=A2=9E=E5=8A=A0=20Data=20=E5=8F=82=E6=95=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Components/Display/Display.razor.cs | 49 +++++++++++++++++-- 1 file changed, 45 insertions(+), 4 deletions(-) diff --git a/src/BootstrapBlazor/Components/Display/Display.razor.cs b/src/BootstrapBlazor/Components/Display/Display.razor.cs index bf84a10c6..12c10bed0 100644 --- a/src/BootstrapBlazor/Components/Display/Display.razor.cs +++ b/src/BootstrapBlazor/Components/Display/Display.razor.cs @@ -8,6 +8,7 @@ using System.Collections; using System.Collections.Generic; using System.Linq; using System.Linq.Expressions; +using System.Reflection; using System.Threading.Tasks; namespace BootstrapBlazor.Components @@ -34,6 +35,12 @@ namespace BootstrapBlazor.Components [Parameter] public string? FormatString { get; set; } + /// + /// 获得/设置 数据集用于 CheckboxList Select 组件 通过 Value 显示 Text 使用 默认 null + /// + [Parameter] + public IEnumerable? Data { get; set; } + /// /// OnParametersSetAsync 方法 /// @@ -111,16 +118,19 @@ namespace BootstrapBlazor.Components } } - private static Func? _converterEnumerable; + private static Func? _convertEnumerableToString; + private static Func>? _convertToEnumerableString; /// /// 获取属性方法 Lambda 表达式 /// /// - private static string ConvertEnumerableToString(TValue value) + private string ConvertEnumerableToString(TValue value) { - return (_converterEnumerable ??= ConvertArrayToStringLambda())(value); + return Data == null + ? (_convertEnumerableToString ??= ConvertEnumerableToStringLambda())(value) + : GetTextByValue((_convertToEnumerableString ??= ConvertToEnumerableStringLambda())(value)); - static Func ConvertArrayToStringLambda() + static Func ConvertEnumerableToStringLambda() { Func ret = _ => ""; var typeArguments = typeof(TValue).GenericTypeArguments; @@ -133,6 +143,37 @@ namespace BootstrapBlazor.Components } return ret; } + + static Func> ConvertToEnumerableStringLambda() + { + Func> ret = _ => Enumerable.Empty(); + var typeArguments = typeof(TValue).GenericTypeArguments; + var param_p1 = Expression.Parameter(typeof(IEnumerable<>).MakeGenericType(typeArguments)); + + var method = typeof(Display<>).MakeGenericType(typeof(TValue)) + .GetMethod("Cast", BindingFlags.NonPublic | BindingFlags.Static)? + .MakeGenericMethod(typeArguments); + if (method != null) + { + var body = Expression.Call(method, param_p1); + ret = Expression.Lambda>>(body, param_p1).Compile(); + } + return ret; + } } + + private static IEnumerable Cast(IEnumerable source) => source.Select(i => i?.ToString()); + + private string GetTextByValue(IEnumerable source) => Data == null + ? "" + : string.Join(",", source.Aggregate(new List(), (s, i) => + { + var text = Data.FirstOrDefault(d => d.Value.Equals(i, StringComparison.OrdinalIgnoreCase))?.Text; + if (text != null) + { + s.Add(text); + } + return s; + })); } } -- Gitee From 0e9a13eb9f586f10ebe2c09e31d17fddb776ed58 Mon Sep 17 00:00:00 2001 From: Argo-Cloud Date: Tue, 6 Apr 2021 01:43:12 +0800 Subject: [PATCH 3/4] =?UTF-8?q?docs:=20=E6=9B=B4=E6=96=B0=20Display=20?= =?UTF-8?q?=E7=BB=84=E4=BB=B6=E7=A4=BA=E4=BE=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Pages/Samples/Displays.razor | 15 +++++++++++++++ .../Pages/Samples/Displays.razor.cs | 9 +++++++++ 2 files changed, 24 insertions(+) diff --git a/src/BootstrapBlazor.Shared/Pages/Samples/Displays.razor b/src/BootstrapBlazor.Shared/Pages/Samples/Displays.razor index 2b4a6aea0..c09f9100e 100644 --- a/src/BootstrapBlazor.Shared/Pages/Samples/Displays.razor +++ b/src/BootstrapBlazor.Shared/Pages/Samples/Displays.razor @@ -110,4 +110,19 @@ + +

+

本例中组件 Value="@@IntValue" 设置 Data="@@IntValueSource" 组件将 Value 值对应的 Text 显示出来
+
InitValue: 1,2,3
+
IntValueSource: Text1,Text2,Text3
+

+
+
+
+ +
+
+
+
+ diff --git a/src/BootstrapBlazor.Shared/Pages/Samples/Displays.razor.cs b/src/BootstrapBlazor.Shared/Pages/Samples/Displays.razor.cs index 5a3f18a8d..3f492a371 100644 --- a/src/BootstrapBlazor.Shared/Pages/Samples/Displays.razor.cs +++ b/src/BootstrapBlazor.Shared/Pages/Samples/Displays.razor.cs @@ -32,6 +32,15 @@ namespace BootstrapBlazor.Shared.Pages private byte[] ByteArray { get; set; } = new byte[] { 0x01, 0x12, 0x34, 0x56 }; + private IEnumerable IntValue { get; set; } = new[] { 1, 2, 3 }; + + private IEnumerable IntValueSource { get; set; } = new[] + { + new SelectedItem("1", "Text1"), + new SelectedItem("2", "Text2"), + new SelectedItem("3", "Text3") + }; + private static async Task ByteArrayFormatter(byte[] source) { await Task.Delay(10); -- Gitee From ede20b866cdaeaf184fab2866187dc5192cacd9d Mon Sep 17 00:00:00 2001 From: Argo-Cloud Date: Tue, 6 Apr 2021 01:47:20 +0800 Subject: [PATCH 4/4] release: publish 5.0.24-beta06 --- src/BootstrapBlazor/BootstrapBlazor.csproj | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/BootstrapBlazor/BootstrapBlazor.csproj b/src/BootstrapBlazor/BootstrapBlazor.csproj index 94010ce77..14944fb2b 100644 --- a/src/BootstrapBlazor/BootstrapBlazor.csproj +++ b/src/BootstrapBlazor/BootstrapBlazor.csproj @@ -1,9 +1,9 @@ - + true logo.png - 5.0.24-beta05 + 5.0.24-beta06 https://gitee.com/LongbowEnterprise/BootstrapBlazor/wikis -- Gitee