javascript - 在 Dynamics 365 客户端 v9 中跨多个表单共享行为
问题描述
我正在使用https://github.com/delegateas/XrmDefinitelyTyped。Program Year
我为具有名为, Start Date
,的字段的表单创建了以下脚本End Date
。我希望这是通用的,这样如果在表单属性中我onChange
为 ProgramYear 设置了一个事件,我可以将其指向,TI.Forms.EventHandlers.onProgramYearChange
然后它将执行脚本。
但是,当我传递字段的执行上下文时,据我所知,我无法访问其他属性的执行上下文,而且我看不到任何获取 and 的其他属性的Start Date
方法End Date
。即使我强制form
转换any
,也没有getAttribute
定义函数。解决这个问题的正确方法是什么?
namespace TI.Forms.EventHandlers {
export function onProgramYearChange(executionContext: Xrm.ExecutionContext<any>) {
var form = executionContext.getFormContext();
form.getAttribute("ti_programyear").addOnChange((context) => {
const updatedProgramYear = context.getEventSource().getValue()[0].name;
XrmQuery.retrieveMultiple(x => x.ti_program_years)
.select(x => [x.ti_start_date, x.ti_end_date])
.filter(x => Filter.equals(x.ti_name, updatedProgramYear))
.execute(programYears => {
const startDateField = form.getAttribute("ti_start_date");
const endDateField = form.getAttribute("ti_end_date");
if (!startDateField.getValue() && !endDateField.getValue()) {
startDateField.setValue(programYears[0].ti_start_date);
endDateField.setValue(programYears[0].ti_end_date);
}
});
});
}
}
您可以从属性的 executionContext 访问其他属性吗?
解决方案
您可以从属性的 executionContext 访问其他属性吗?
是的你可以。事实上,当您检查Pass execution context as the first parameter
.
executionContext.getFormContext()
将为您提供formcontext
与之前类似的整体Xrm.Page
。
这就是我们onChange
在表单加载时所拥有的工作。为简洁起见进行了清洁。
var standing = formContext.getAttribute("new_standing");
if (standing !== null) {
standing.addOnChange(this.validateStatusChanged);
}
下面是本机 Web api 调用和从成功回调方法访问 formContext。
validateStatusChanged: function (executionContext) {
var formContext = executionContext.getFormContext();
Xrm.WebApi.retrieveMultipleRecords("new_testEntity", query).then(
function success(result) {
if (result.entities.length > 0) {
var limitField = formContext.getAttribute('new_limit');
if (limitField.getValue() !== 1) {
limitField.setValue(1);
}
}
},
function (error) {
//
}
);
}
推荐阅读
- json - 当它是 JSON 节点名称的一部分时,你如何处理它?
- powershell - 通过 Powershell 拒绝域内组织单位的读取权限
- itext - 字体未正确嵌入使用 itextsharp 5.0.5.0 生成的 PDF
- angular - 在渲染 Angular Material 表时访问下一行
- google-apps-script - 创建 PDF 时的 Apps 脚本不存在最新更改
- sql - 比较同一表中的 2 列值
- angular - 如何对 ReplaySubject 的所有排放应用延迟?
- python - 为 Yocto 创建配方时,python3 中没有名为“datetime”的模块,但 python2.7 中存在 datetime
- java - 在 Firebase 功能上保存当前时间不起作用
- dart - 从double转换为int时如何避免使用'as'?