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

Define Fields inside Editable Grid in Form of Model-Driven-App as required via JavaScript

提问人:Tobias1999 提问时间:10/4/2023 更新时间:10/4/2023 访问量:61

问:

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

为了达到这个目标,我想通过 webresource 使用 JavaScript 方法。

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

在附件中,我的代码很不幸不起作用。我仍然无法访问可编辑网格中的属性。我已将函数作为 webresource 上传,并将 webresource 嵌入到模型驱动应用程序相应形式的 OnLoad-Event 中。

返回以下错误: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-event 上可编辑网格中的属性。也许有人知道如何实现这一目标/我做错了什么。

需要 JavaScript Dynamics-CRM CRM PowerApps

评论

0赞 Arun Vinoth-Precog Tech - MVP 10/5/2023
执行此函数时,网格控制可能尚不可用。

答:

1赞 George R 10/4/2023 #1

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

这应该对该错误进行排序。

评论

0赞 Tobias1999 10/4/2023
你的意思是我应该替换这部分:repairActivityGridContext.addOnLoad(setRequiredFields);使用 setRequiredFields(executionContext) ?也在我的函数内部还是在函数外部?
0赞 George R 10/4/2023
在模型驱动页面的“表单”选项卡中,单击“事件”,添加事件加载,然后选择库后,必须输入所需的函数。这是您需要键入 setRequiredFields 的位置。然后,保存并发布。这应该:)
0赞 Tobias1999 10/4/2023
我在 OnLoad-Event 中嵌入了该函数。我需要删除此行 repairActivityGridContext.addOnLoad(setRequiredFields);吗?