04 Aras Innovator二次开发-客户端方法

客户端方法为JS方法。

系统提供了很多触发点,可以嵌入客户端方法,如下:

1 对象类的客户端事件页签:

2 窗体的Form Event和Filed Event

3.关系类的网格事件:

4 属性事件:

5.可自定义Action,触发客户端事件:

下面我们用一个示例,演示Form Event和Field Event的使用方法。

该示例依旧使用My Part对象类,我们使用客户端方法,计算零件的总成本。

总成本的计算方式:My BOM页签每条关系数据的成本*数量,然后相加即为总成本。

第一个客户端方法,在My Part的Form Event的On Load触发,方法如下:

top.window.moveTo(0,0);
top.window.resizeTo(screen.width,screen.height-50);   //自动根据屏幕大小调整窗体大小

document.CostRollupThisItem = function()
{
  var total = 0;
  var boms  = document.thisItem.getItemsByXPath(
    "//Item[@type='My BOM']");   //获取My BOM页签的数据
  var count = boms.getItemCount();
  for (var i=0; i<count; ++i)   ///遍历数据
  {
    var bom  = boms.getItemByIndex(i);
    var part = bom.getRelatedItem();
    var cost = part.getProperty("cost");
    var qty  = bom.getProperty("qty");
    total += cost * qty;
  }
  handleItemChange("cost",total);
};

document.CostRollupFromServer = function()
{
  var total = 0;
  var q = document.thisItem.newItem("My BOM","get");   ///从服务端查询My BOM关系页签数据
  q.setProperty("source_id",document.itemID);
  q.setAttribute("select","qty,related_id(cost)");
  var result = q.apply();
  var boms  = result.getItemsByXPath("//Item[@type='My BOM']");
  var count = boms.getItemCount();
  for (var i=0; i<count; ++i)
  {
    var bom  = boms.getItemByIndex(i);
    var part = bom.getRelatedItem();
    var cost = part.getProperty("cost");
    var qty  = bom.getProperty("qty");
    total += cost * qty;
  }
  handleItemChange("cost",total);
};

document.CostRollupFromGrid = function()
{
  var total = 0;
  //var grid = top.relationships.frames[0].grid;  //11SP9及老版本获取关系类页签网格
  var grid=top.frames.relationships.iframesCollection[1].contentWindow.grid;    ///11SP12及新版本获取关系类网格
  var ids  = grid.getAllItemIds('|').split('|');  ///获取网格的所有行ID
  for (var i=0; i<ids.length; ++i)
  {
    var id   = ids[i];
    var cost = grid.cells(id,6).GetValue();  //获取对应的列的数据,列索引从0开始
    var qty  = grid.cells(id,2).GetValue();
    total += cost * qty;
  }
  handleItemChange("cost",total);
};

方法命名为Lab34,嵌入至Form的On Load事件:

此方法书写完成后,再写三个客户端方法,用来触发三种计算方式,因第一个方法在预先加载,因此此处仅调用客户端方法即可,代码如下:

在窗体上添加三个按钮,然后在按钮的Field Event的On Click事件中嵌入对应的客户端方法,如下图:

窗体保存后,我们打开My Part窗体,点击按钮,即可计算总成本,如下:

Form Event和Field Event为较常用的客户端事件。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/400282.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

剑桥大学强推!一本超硬核的机器学习教材书!(449页中英文pdf下载)

今天给同学们推荐一本专为高级本科生或刚毕业的学生设计的机器学习教材——《理解机器学习&#xff1a;从理论到算法》。 这本教材的内容十分丰富&#xff0c;但没有陷入“科普”式的堆砌材料的写作方式&#xff0c;由于作者是该领域的权威专家&#xff0c;因此在介绍各种理论…

⭐北邮复试刷题LCR 037. 行星碰撞__栈 (力扣119经典题变种挑战)

LCR 037. 行星碰撞 给定一个整数数组 asteroids&#xff0c;表示在同一行的小行星。 对于数组中的每一个元素&#xff0c;其绝对值表示小行星的大小&#xff0c;正负表示小行星的移动方向&#xff08;正表示向右移动&#xff0c;负表示向左移动&#xff09;。每一颗小行星以相…

天锐绿盾 | 文件数据\资料防泄漏软件 \ 自动智能透明加密保护

怎么防止公司办公终端文件数据资料外泄? 防止公司办公终端文件数据资料外泄是非常重要的&#xff0c;以下是一些有效的措施&#xff1a; 限制访问权限&#xff1a;根据员工的职责和需求&#xff0c;设定文件和数据资料的访问权限。确保只有授权人员才能访问敏感信息。 加密存…

JAVA高并发——单例模式和不变模式

文章目录 1、探讨单例模式2、不变模式 由于并行程序设计比串行程序设计复杂得多&#xff0c;因此我强烈建议大家了解一些常见的设计方法。就好像练习武术&#xff0c;一招一式都是要经过学习的。如果自己胡乱打&#xff0c;效果不见得好。前人会总结一些武术套路&#xff0c;对…

Flink理论—容错之状态后端(State Backends)

Flink理论—容错之状态后端(State Backends) Flink 使用流重放和 检查点的组合来实现容错。检查点标记每个输入流中的特定点以及每个运算符的相应状态。通过恢复运算符的状态并从检查点点重放记录&#xff0c;可以从检查点恢复流数据流&#xff0c;同时保持一致性 容错机制不…

Git笔记——1

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言 Git安装_centos 创建本地仓库 配置本地仓库 添加文件——场景一 查看.git文件 添加文件——场景二 修改文件 版本回退 总结 前言 世上有两种耀眼的光芒&#…

基于Java (spring-boot)的社区物业管理系统

一、项目介绍 本系统共分为两个角色&#xff1a;管理员和业主。 主要功能有&#xff0c;核心业务处理&#xff0c;基础信息管理&#xff0c;数据统计分析 核心业务处理&#xff1a;车位收费管理&#xff0c;物业收费管理&#xff0c;投诉信息管理&#xff0c;保修信息管理。 …

大数据计算技术秘史(上篇)

在之前的文章《2024 年&#xff0c;一个大数据从业者决定……》《存储技术背后的那些事儿》中&#xff0c;我们粗略地回顾了大数据领域的存储技术。在解决了「数据怎么存」之后&#xff0c;下一步就是解决「数据怎么用」的问题。 其实在大数据技术兴起之前&#xff0c;对于用户…

什么是HTTP代理,socks5代理?它们的区别是什么?

什么是HTTP代理&#xff1f; HTTP代理是一种常见的网络代理方式&#xff0c;它通过在客户端和服务器之间建立一个中间层&#xff0c;将客户端的请求转发给服务器&#xff0c;并将服务器的响应返回给客户端。HTTP代理通常用于访问受限制的网站&#xff0c;或者在网络中隐藏客户…

NestJS入门9:管道入门

前文参考 NestJS入门1&#xff1a;创建项目 NestJS入门2&#xff1a;创建模块 NestJS入门3&#xff1a;不同请求方式前后端写法 NestJS入门4&#xff1a;MySQL typeorm 增删改查 NestJS入门5&#xff1a;加入Swagger NestJS入门6&#xff1a;日志中间件 NestJS入门7&…

HTTP REST 方式调用WebService接口(wsdl)

一、WebService接口正常使用SOAP协议调用&#xff0c;测试时常采用SoapUI软件调用&#xff0c;具体如下&#xff1a; 二、由于目前主流web服务逐渐转换为RESTful的形式&#xff0c;且SOAP协议的实现也是基于HTTP协议&#xff0c;故存在通过HTTP调用WebService接口的可能 2.1 …

嵌入式I2C 信号线为何加上拉电阻(图文并茂)

IIC 是一个两线串行通信总线&#xff0c;包含一个 SCL 信号和 SDA 信号&#xff0c;SCL 是时钟信号&#xff0c;从主设备发出&#xff0c;SDA 是数据信号&#xff0c;是一个双向的&#xff0c;设备发送数据和接收数据都是通过 SDA 信号。 在设计 IIC 信号电路的时候我们会在 SC…

分组统计

目录 分组统计 根据部门编号分组&#xff0c;查询每个部门的编号、人数、平均工资 根据职位分组&#xff0c;统计出每个职位的人数、最低工资与最高工资 如果查询不使用 GROUP BY 子句&#xff0c;那么 SELECT 子句中只允许出现统计函数&#xff0c;其他任何字段不允许出现…

Git笔记——2

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言 一、撤销修改__情况一 二、撤销修改__情况二 三、撤销修改__情况三 四、删除文件 五、理解分支 六、创建、切换和合并分支初体验 七、删除分支 八、合并冲突 总…

java程序流程控制

java程序有哪些流程控制、以及Java提供了哪些方案来控制程序的执行顺序&#xff1f; 程序的流程控制一般分为3种&#xff1a;顺序结构、分支结构、循环结构 顺序结构&#xff1a;就是不加任何控制&#xff0c;代码从main方法开始自上而下执行 分支结构&#xff1a;就是根据条…

crontab history查看命令的执行时间

crontab crontab学习网站&#xff08;19. crontab 定时任务 — Linux Tools Quick Tutorial&#xff09; 例子 今天实际工作里用到的&#xff08;已经进行了防信息泄露处理 比如我现在希望每周三上午10:00之行一个php脚本 --gpt生成 00 10 * * 3 cd /home/user/project/r…

Python开源项目周排行 2024年第4周

#2024年第4周2024年2月18日1Awesome-LLM一个精选的大型语言模型 (LLM) 资源列表&#xff0c;涵盖了以下内容&#xff1a; LLM 模型介绍 论文和代码 部署工具 应用场景 教程和示例 Awesome-LLM 的目标是帮助人们了解和使用 LLM 技术&#xff0c;并为 LLM 开发人员提供一个资源中…

Git详解及 github与gitlab使用

目录 1.1 关于版本控制 1.1.1 本地版本控制 1.1.2 集中化的版本控制系统 1.1.3 分布式版本控制系统 1.2 Git简介 1.2.1 Git历史 1.3 安装git 1.3.1 环境说明 1.3.2 Yum安装Git 1.3.3 编译安装 1.4 初次运行 Git 前的配置 1.4.1 配置git 1.4.2 获取帮助 1.5 获取 G…

接口请求重试的8种方法

转载文章&#xff1a;https://blog.csdn.net/qq_34162294/article/details/134131439 文章目录 1.前言2.几种方法 2.1循环重试2.2 使用Spring Retry库 2.2.1 添加 Maven 依赖2.2.2 添加 EnableRetry 注解启用重试功能2.2.3 在需要重试的方法上添加 Retryable 注解2.2.4. 还可以…

week04day02(爬虫02)

<span>: 通常用于对文本的一部分进行样式设置或脚本操作。<a>: 定义超链接&#xff0c;用于创建链接到其他页面或资源的文本。<img>: 用于插入图像。<br>: 用于插入换行。 姓名&#xff1a;<input type"text" value"lisi">…