zoukankan      html  css  js  c++  java
  • Dynamics 365 CE命令栏按钮点击后刷新表单页面方法

    微软动态CRM专家罗勇 ,回复326或者20190428可方便获取本文,同时可以在第一间得到我发布的最新博文信息,follow me!

    Dynamics 365 Customer Engagement 定制中少不了为命令栏添加按钮,点击按钮常做的事情包括设置表单字段的值,然后保存记录(保存记录过程中可能触发同步插件执行),再提示成功,用户点击后需要刷新当前页面,以便表单页面应用新逻辑,比如提交后表单页面只读。

    刷新当前页面,那还不简单?用 formContext.data.refresh(save).then(successCallback, errorCallback); 或者  formContext.data.entity.save(saveOption); 

    光是这样不行,下面我介绍一个可行的方法。

    命令栏添加按钮执行的JavaScript方法增加一个参数来接收传递过来的execution context (执行上下文,一般为表单上下文或者表格上下文),这个 CrmParameter 的名称是 PrimaryControl ,Ribbon的定义示例如下,这里来自官方文档:Pass Customer Engagement data from a page as a parameter to ribbon actions

    <CommandDefinition Id="SampleCommand">
      <EnableRules/>
      <DisplayRules/>
      <Actions>
        <JavaScriptFunction Library="$webresource:new_mySampleScript.js" FunctionName="CloseRequest">
          <CrmParameter Value="PrimaryControl" />
        </JavaScriptFunction>
      </Actions>
    </CommandDefinition>

    然后我这里演示执行的代码如下:

    function CloseRequest(primaryControl) {
        var formContext = primaryControl;
        formContext.getAttribute("statuscode").setValue(100000006);
        formContext.data.save().then(function () {
            var entityFormOptions = {};
            entityFormOptions["entityName"] = formContext.data.entity.getEntityName();
            entityFormOptions["entityId"] = formContext.data.entity.getId();
            Xrm.Navigation.openForm(entityFormOptions).then(
                function () {
                    var alertStrings = { text: "操作成功!" };
                    var alertOptions = { height: 120,  160 };
                    Xrm.Navigation.openAlertDialog(alertStrings, alertOptions).then(
                        function success() { },
                        function () { }
                    );
                },
                function (errorOjb) {
                    console.log(errorOjb);
                });
        }, function (errorOjb) {
            Xrm.Navigation.openErrorDialog({ message: errorOjb.message }).then(
                function () {
                },
                function () {
                });
        }
        );    
    }
  • 相关阅读:
    SpringTask中cron表达式整理记录
    解决idea启动弹窗
    windows上安装kafka
    两种方式实现横向滚动条
    浅谈新的布局方式-flex
    不忘初衷,方得始终 ---总结一年的前端生涯
    javascript深入理解js闭包(转载)
    es6学习笔记--Interator和Generator(以及for-of的用法)
    根据HTML5的新方法 drag & drop 方法实现表格拖拽实例
    HTML5 拖放(Drag 和 Drop)详解与实例(转)
  • 原文地址:https://www.cnblogs.com/luoyong0201/p/Dynamics_365_Command_Bar_Button_Refresh_Form.html
Copyright © 2011-2022 走看看