diff --git a/src/BootstrapBlazor.Server/BootstrapBlazor.Server.csproj b/src/BootstrapBlazor.Server/BootstrapBlazor.Server.csproj index db787fd10c8..062fe881fec 100644 --- a/src/BootstrapBlazor.Server/BootstrapBlazor.Server.csproj +++ b/src/BootstrapBlazor.Server/BootstrapBlazor.Server.csproj @@ -60,7 +60,7 @@ - + diff --git a/src/BootstrapBlazor.Server/Components/Samples/OpcDa.razor b/src/BootstrapBlazor.Server/Components/Samples/OpcDa.razor index c5309c2ea0d..3dbbd94dd1f 100644 --- a/src/BootstrapBlazor.Server/Components/Samples/OpcDa.razor +++ b/src/BootstrapBlazor.Server/Components/Samples/OpcDa.razor @@ -7,7 +7,7 @@ - +

1. 点击 连接 按钮与 OpcDa 服务器建立通讯连接

@@ -42,7 +42,7 @@

3. 订阅功能

通过订阅可以监控一组 位号 数据改变情况,当数据改变时通过 DataChanged 回调方法通知订阅者

-
+

@@ -73,5 +73,15 @@
-
+

+ +

4. 浏览

+

通过调用 OpcDaServerBrowse 方法可以构建一个节点树状结构

+

+ +

+

+ +

diff --git a/src/BootstrapBlazor.Server/Components/Samples/OpcDa.razor.cs b/src/BootstrapBlazor.Server/Components/Samples/OpcDa.razor.cs index 6e6f02df506..120c101601e 100644 --- a/src/BootstrapBlazor.Server/Components/Samples/OpcDa.razor.cs +++ b/src/BootstrapBlazor.Server/Components/Samples/OpcDa.razor.cs @@ -82,5 +82,33 @@ private void UpdateValues(List items) InvokeAsync(StateHasChanged); } -} + private List> _roots = []; + + private void OnBrowse() + { + var elements = OpcDaServer.Browse("", new OpcBrowseFilters(), out _); + _roots = elements.Select(element => new TreeViewItem(element) + { + Text = element.Name, + HasChildren = element.HasChildren, + Icon = "fa-solid fa-fw fa-cubes" + }).ToList(); + } + + private Task>> OnExpandNodeAsync(TreeViewItem element) + { + var children = OpcDaServer.Browse(element.Value.ItemName, new OpcBrowseFilters(), out _); + var items = children.Select(i => new TreeViewItem(i) + { + Text = i.Name, + HasChildren = i.HasChildren, + Icon = i.HasChildren ? "fa-solid fa-fw fa-cube" : "fa-solid fa-fw fa-wrench" + }); + if (!items.Any()) + { + element.HasChildren = false; + } + return Task.FromResult(items); + } +}