将内容动态加载到内容控件(仪表板)中 Load content dynamically into content control (Dashboard)

<< 点击显示目录 >>

主页  mappView帮助助手 > mappView入门简单Wiki >

将内容动态加载到内容控件(仪表板)中 Load content dynamically into content control (Dashboard)



需求

Automation Studio 4.4

mappView 5.4

说明

-->此案例<-- 展示了如何创建动态仪表板以显示来自可选组件的信息。 在此示例中,机器有 4 个驱动器,它们都具有相同的信息。 由于驱动器是可选的,因此每个驱动器都可以在起始页上启用或禁用。 示例页面包含 4 个在页面加载时动态填充的内容控件。 如果内容可见,则 OPC 变量会存储信息。

Img

Img

实现

添加新页面并定义布局

创建多个切换按钮以启用或禁用仪表板项目

将切换按钮连接到存储信息的 OPC 变量(如果项目可见)

添加第二个页面并定义布局

添加 分组框并在每个分组框内添加一个内容控件

为每个内容控件添加一个内容文件

创建事件绑定以在内容之间切换

主要工作由“start.eventbinding”中的事件绑定代码完成。 加载示例页面时,事件绑定会检查每个 OPC 变量以查看内容是否应该可见。 然后事件处理程序比较页面名称和 OPC 变量并加载或卸载内容。

Event binding 文件

<?xml version="1.0" encoding="utf-8"?>
<EventBindingSet id="eventbindingStart" xmlns="http://www.br-automation.com/iat2014/eventbinding/v2" xmlns:types="http://www.br-automation.com/iat2015/widgetTypes/v2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
 <Bindings>
  <!-- Load content for each field when page sample is loaded />-->
  <EventBinding>
   <Source xsi:type="clientSystem.Event" event="ContentLoaded" />  
  
   <!-- Read data points to check if content should be visible />-->
   <Operand name="ContentIsVisible1" datatype="BOOL">
    <ReadTarget xsi:type="opcUa.NodeAction.Read" refId="::AsGlobalPV:Motor[1].IsVisible" >
     <Method xsi:type="opcUa.NodeAction.GetValue" />
    </ReadTarget>
   </Operand>
   <Operand name="ContentIsVisible2" datatype="BOOL">
    <ReadTarget xsi:type="opcUa.NodeAction.Read" refId="::AsGlobalPV:Motor[2].IsVisible" >
     <Method xsi:type="opcUa.NodeAction.GetValue" />
    </ReadTarget>
   </Operand>
   <Operand name="ContentIsVisible3" datatype="BOOL">
    <ReadTarget xsi:type="opcUa.NodeAction.Read" refId="::AsGlobalPV:Motor[3].IsVisible" >
     <Method xsi:type="opcUa.NodeAction.GetValue" />
    </ReadTarget>
   </Operand>
   <Operand name="ContentIsVisible4" datatype="BOOL">
    <ReadTarget xsi:type="opcUa.NodeAction.Read" refId="::AsGlobalPV:Motor[4].IsVisible" >
     <Method xsi:type="opcUa.NodeAction.GetValue" />
    </ReadTarget>
   </Operand>
     
   <!-- Load content for each field when page sample is loaded and content is set to visible />--> 
   <EventHandler condition="contentId=&quot;contentSample&quot; AND ContentIsVisible1=true" >
    <Action>
     <Target xsi:type="widgets.brease.ContentControl.Action" contentRefId="contentSample" widgetRefId="ContentControl1">
      <Method xsi:type="widgets.brease.ContentControl.Action.LoadContent" contentId="contentDyn1"/>
     </Target>
    </Action>
   </EventHandler>
   <EventHandler condition="contentId=&quot;contentSample&quot; AND ContentIsVisible1=false" >
    <Action>
     <Target xsi:type="widgets.brease.ContentControl.Action" contentRefId="contentSample" widgetRefId="ContentControl1">
      <Method xsi:type="widgets.brease.ContentControl.Action.UnloadContent" />
     </Target>
    </Action>
   </EventHandler>  
   <EventHandler condition="contentId=&quot;contentSample&quot; AND ContentIsVisible2=true" >
    <Action>
     <Target xsi:type="widgets.brease.ContentControl.Action" contentRefId="contentSample" widgetRefId="ContentControl2">
      <Method xsi:type="widgets.brease.ContentControl.Action.LoadContent" contentId="contentDyn2"/>
     </Target>
    </Action>
   </EventHandler>
   <EventHandler condition="contentId=&quot;contentSample&quot; AND ContentIsVisible2=false" >
    <Action>
     <Target xsi:type="widgets.brease.ContentControl.Action" contentRefId="contentSample" widgetRefId="ContentControl2">
      <Method xsi:type="widgets.brease.ContentControl.Action.UnloadContent" />
     </Target>
    </Action>
   </EventHandler>  
   <EventHandler condition="contentId=&quot;contentSample&quot; AND ContentIsVisible3=true" >
    <Action>
     <Target xsi:type="widgets.brease.ContentControl.Action" contentRefId="contentSample" widgetRefId="ContentControl3">
      <Method xsi:type="widgets.brease.ContentControl.Action.LoadContent" contentId="contentDyn3"/>
     </Target>
    </Action>
   </EventHandler>
   <EventHandler condition="contentId=&quot;contentSample&quot; AND ContentIsVisible3=false" >
    <Action>
     <Target xsi:type="widgets.brease.ContentControl.Action" contentRefId="contentSample" widgetRefId="ContentControl3">
      <Method xsi:type="widgets.brease.ContentControl.Action.UnloadContent" />
     </Target>
    </Action>
   </EventHandler>
   <EventHandler condition="contentId=&quot;contentSample&quot; AND ContentIsVisible4=true" >
    <Action>
     <Target xsi:type="widgets.brease.ContentControl.Action" contentRefId="contentSample" widgetRefId="ContentControl4">
      <Method xsi:type="widgets.brease.ContentControl.Action.LoadContent" contentId="contentDyn4"/>
     </Target>
    </Action>
   </EventHandler>
   <EventHandler condition="contentId=&quot;contentSample&quot; AND ContentIsVisible4=false" >
    <Action>
     <Target xsi:type="widgets.brease.ContentControl.Action" contentRefId="contentSample" widgetRefId="ContentControl4">
      <Method xsi:type="widgets.brease.ContentControl.Action.UnloadContent" />
     </Target>
    </Action>
   </EventHandler>     
  </EventBinding>
 </Bindings>
</EventBindingSet>