如何使用Refresh()和Save()方法将回调添加到表单的save中

时间:2015-11-18 03:55:43

标签: dynamics-crm-2015 xrmservicetoolkit

我想在保存完成后向表单的save添加一个回调以激活OnLoad事件处理程序。我还想在保存完成后强制页面刷新。

Google向我展示了许多网页,这些网页在MSDN文章中重申了相同的信息,但是他们没有解释在表单完成保存后将save方法添加到回调的位置。

我知道我可以将Xrm.Page.data.refresh(true).then(回调)添加到表单控件并让页面刷新,但我想在保存完成后刷新页面。 / p>

如何在表单保存后使用Refresh()刷新表单?

另外,如何使用Save()添加回调来保存表单保存后将运行的表单?

1 个答案:

答案 0 :(得分:1)

您是否尝试过在保存回调中调用save并调用refresh?

保存:Xrm.Page.data (client-side reference)

Xrm.Page.data.save(saveOptions).then(successCallback, errorCallback)

刷新:Xrm.Page.data (client-side reference)

Xrm.Page.data.refresh(save).then(successCallback, errorCallback);

组合:

Xrm.Page.data.save().then(function(){Xrm.Page.data.refresh(false);});

- 编辑 -

我会猜测你正在尝试做什么...

  1. 对表单进行更改
  2. 用户点击保存或执行自动保存
  3. CRM完全保存记录后,您是否想要执行其他一些javascript操作?
  4. 您可以尝试的一件事是挂钩OnSave事件。使用javascript超时检查表单的isDirty属性。一旦表单不再脏,CRM就保存了数据。

    创建一个新的表单库javascript文件并添加如下内容: 使用' SetExecuteOnSaveComplete'为表单创建一个新的OnSave事件。作为要调用的函数。

    function ExecuteWhenSaveComplete(callback) {
        setTimeout(function () {
            if(!Xrm.Page.data.entity.getIsDirty())
                return callback();
            //alert('not complete');
            ExecuteWhenSaveComplete(callback);
        }, 500);
    }
    
    function SetExecuteOnSaveComplete(){
        ExecuteWhenSaveComplete(function(){
            alert('form save complete');
            // do what you need to do
        });
    }