Power Apps 学习笔记 - 客户端脚本

1. 客户端API

1.1 客户端API对象

客户端API对象链接:客户端API

在这里插入图片描述

1. 使用执行上下文和表单上下文的时候切记需要在程序属性当中选择"上下文传递作为第一个参数".

1.2 Xrm对象模型(旧)

在这里插入图片描述

a. context:用于获取当前客户端和用户的信息,或者特定的参数信息
b. data:提供实体数据和方法的访问权限,管理窗体和业务流程中的数据
c. ui:检索用户界面相关信息的属性和方法,包含子组件集合

2. 功能实现

2.1 客户端脚本

  客户端脚本演练: 客户端脚本演练
  客户端脚本API: 客户端API
  a. 客户端脚本简介

  1. 客户端API: 分为四种主要对象,分别是executionContext(表单网格中事件执行的上下文)、formContext(表单引用上下文)、gridContext(网格引用上下文)、Xrm(全局对象)
  2. 获取执行对象的属性的时候(属性引用),其逻辑名称作为其唯一标识

  b. 脚本使用

  1. 准备Js脚本
    a. 解决方案当中上传Web资源(JavaScript代码)
    b. 在表的窗体当中引入该Web资源
  2. 进入相应窗体(主类型)向其中保存时/加载时添加事件,将相应的Js脚本添加,并设置好对应调用的方法名字即可
var namespace = window.namespace || {};
(function () {
    this.hello = function () {
        // 设置中国内容可能乱码
        var alertStrings = { confirmButtonLabel: "Yes", text: "This is an alert.", title: "Sample title" };
        var alertOptions = { height: 120, width: 260 };
        Xrm.Navigation.openAlertDialog(alertStrings, alertOptions).then(
            function (success) {
                console.log("Alert dialog closed");
            },
            function (error) {
                console.log(error.message);
            }
        );
    }
}).call(namespace);

在这里插入图片描述

2.2 Look Up过滤事件

 过滤事件:查找控件过滤事件

1. 此内容可以参考API进行完成,记住关键点,属性的获取来源于其对应的逻辑名称必须要对应.
// 向查找控件前添加过滤事件
function addRoomPreSearch() {
    Xrm.Page.getControl("cr008_room").addPreSearch(function () {  // child field
        addPostingLookupFilter();
    });
}
// 通过房间类型比对,将查找的房间进行过滤出来
function addPostingLookupFilter() {
    var gl = Xrm.Page.getAttribute("cr008_type").getValue(); // parent field
    var fetchXml = "";
    if (gl != null) {
        fetchXml = "<filter type='and'><condition attribute='cr008_type' operator='eq' value='" + gl + "' /></filter>";
    }
    Xrm.Page.getControl("cr008_room").addCustomFilter(fetchXml); // child field
}

2.3 Option Set 动态添加选项

1. 同一解决方案当中的窗体可以互相共享表
2. 每次获取的type类型不一样,所以必须要放在方法内部
var namespace = window.namespace || {};

(function () {
    this.test = function () {
        // 1. 获取原来类型
        var type = Xrm.Page.getAttribute("cr008_type").getValue();
        // 2. 删除所有选项
        Xrm.Page.getControl("zhangyun_roomfilter").clearOptions();

        // 3. 查询所有数据 -> 匹配合法的加入
        Xrm.WebApi.online.retrieveMultipleRecords("cr008_room", "?$select=cr008_name,cr008_type").then(
            function success(results) {
                for (var i = 0; i < results.entities.length; i++) {
                    var cr008_name = results.entities[i]["cr008_name"];
                    var cr008_type = results.entities[i]["cr008_type"];
                    if (cr008_type == type) {
                        var room = {
                            text: cr008_name,
                            value: i
                        };
                        Xrm.Page.getControl("zhangyun_roomfilter").addOption(room);
                    }
                }
            },
            function (error) {
                Xrm.Utility.alertDialog(error.message);
            }
        );

    }
}).call(namespace);

  • 11
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

psudd

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值