0

我需要访问 Web 资源的控件来刷新它。根据下面的链接,我们需要有表单上下文。

但是我无法获取表单上下文,并且在有关如何访问 HTML Web 资源中的执行上下文的文档中的任何地方都找不到它。我尝试在加载表单时注册一个函数并使用表单属性在其中传递执行参数。然后在函数中,我得到它,如下所示,formContext 变量作为全局变量。

var formContext;
function getFormExecutionContext(executionContext) {
    formContext =  executionContext.getFormContext();  
    console.log("Form Context: "); 
    console.dir(formContext); 
}

但是,当我尝试在放置在 CRM 表单上的其他 HTML Web 资源中访问此 formContext 时,它显示未定义。有人可以解释一下我们如何在 HTML Web 资源中获取表单上下文吗?

4

2 回答 2

2

通常我们会在 HTML webresource head 部分包含以下代码段,这将向您展示 CRM 上下文和 CRM 表单之外的控件。

<head>
    <title>HTML Web Resource</title>
    <script src="../ClientGlobalContext.js.aspx" type="text/javascript" ></script>
</head>

然后访问如下控件:

parent.Xrm.Page.getAttribute("my_control").getValue();

对于向后兼容性,这同样适用于 v9 ,文档中可能未提及。

于 2018-01-10T17:25:18.453 回答
0

如果您的功能区按钮位于子网格上,并且您需要在 9.0 或更高版本中访问 FormContext,这里是详细信息。

在功能区部分,传递以下参数。

<Actions>
    <JavaScriptFunction FunctionName="subgridEvent" Library="$webresource:new_contactformload.js"> 
        <CrmParameter Value="PrimaryControl" /> 
     </JavaScriptFunction>
</Actions>

这是访问表单上下文的函数。

function ribbonHandler(e) { 
    var formContext = e.getFormContext();
    var recordId = formContext.data.entity.getId(); 
    var fieldValue = formContext.getAttribute("<field_name>").getValue(); 
}

这是节省我时间的参考。

于 2018-12-20T16:49:56.670 回答