1

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

谷歌向我展示了许多在 MSDN 文章中重申相同信息的网页,但他们没有解释在表单完成保存后将保存方法放置在何处以添加回调。

我知道我可以将 Xrm.Page.data.refresh(true).then(callback) 添加到表单控件并以这种方式刷新页面,但我希望页面在保存完成后刷新。

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

另外,如何使用 Save() 为保存表单添加一个回调,该回调将在表单完成保存后运行?

4

1 回答 1

2

您是否尝试过在保存回调中调用保存并调用刷新?

保存:Xrm.Page.data(客户端参考)

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

刷新:Xrm.Page.data(客户端参考)

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

结合:

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

- 编辑 -

我会猜测你想要做什么......

  1. 对表格进行了更改
  2. 用户点击保存或执行自动保存
  3. CRM 完全保存记录后,您想执行其他一些 JavaScript 操作吗?

您可以尝试的一件事是连接到表单 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
    });
}
于 2015-11-19T16:36:31.640 回答