根据需要通过 JavaScript 以模型驱动应用程序的形式定义可编辑网格内的字段

问题描述 投票:0回答:2

我想根据需要以与模型驱动应用程序相同的形式在多个可编辑网格中定义多个列。这背后的意义是,我们有 2 个不同的模型驱动应用程序,用于 2 个不同的用户角色,并且对于一个特定角色,应该需要一些字段。

为了实现这个目标,我想通过网络资源使用 JavaScript 方法。

不幸的是,我尝试避免 JavaScript 的第一种方法不起作用。 我已经尝试通过 Power Automate 流程和业务规则来解决此问题,但不幸的是,这会导致冲突,因为业务规则触发得太快

在附件中我的代码不幸的是无法工作。我在访问可编辑网格中的属性时仍然遇到问题。我已将函数上传为 Web 资源,并将 Web 资源嵌入到模型驱动应用程序相应表单的 OnLoad 事件中。

返回以下错误:repairActivityGridEntity.getEntityMetadata is not a function

代码:

function setRequiredFields(executionContext) {
    let formContext = executionContext.getFormContext();
    let repairActivityGridContext = formContext.getControl("RepairActivitys");
    let repairActivityGrid = repairActivityGridContext.getGrid();
    let repairActivityGridRows = repairActivityGrid.getRows();
    if (repairActivityGridRows.getLength() > 0) {
      let repairActivityGridData = repairActivityGridRows.get(0).getData();
      let repairActivityGridEntity = repairActivityGridData.getEntity();
      let repairActivityGridEntityMetadata = repairActivityGridEntity.getEntityMetadata();
      let repairActivityGridColumns = repairActivityGridEntityMetadata.Attributes;
      for (let i = 0; i < repairActivityGridColumns.getLength(); i++) {
        if (repairActivityGridColumns.get(i).LogicalName == "mca_overnightstaysindays") {
          repairActivityGridColumns.get(i).RequiredLevel = "required";
          break;
        }
      }
    }
    repairActivityGridContext.addOnLoad(setRequiredFields);
  }

我尝试用 JavaScript 解决它,但似乎无法解决它以访问表单 OnLoad 事件上可编辑网格中的属性。也许有人知道如何实现这个/我做错了什么。

javascript dynamics-crm crm powerapps required
2个回答
1
投票

它会返回该错误,因为您调用了错误的错误。您需要调用函数 setRequiredFields,(并且只有“setRequiredFields”,没有其他内容),因为这是您创建的函数。

这应该可以解决该错误。


0
投票

这就是我将函数嵌入到表单的 OnLoad 事件中的方法。错误还是一样。

© www.soinside.com 2019 - 2024. All rights reserved.