gpt4 book ai didi

javascript - 保存并关闭后刷新表单

转载 作者:行者123 更新时间:2023-11-29 19:31:49 24 4
gpt4 key购买 nike

我有一些自定义脚本,可以将最新的注释值添加到隐藏的文本字段,然后隐藏的文本字段会显示在我的实体 View 之一中。当我在添加新注释后单击保存并关闭时, View 不会更新为最新的注释,因为表单没有刷新。如果用户单击保存并关闭,我该怎么做才能刷新表单?

编辑:@Arthur 出于某种原因,我无法在您的帖子中添加评论。

不管怎样,我按照你的建议试过了。当我尝试单独单击“保存”时,表单刷新并且返回的值为 true,因此该标志被触发。但是,当我尝试使用“保存并关闭”时,表单没有刷新,因此标志没有被触发。这让我假设我必须刷新表单才能更新 View 。

编辑 2:这是检索信息的代码。

function GetLatestNote() {

var req = new XMLHttpRequest();

req.open("GET", encodeURI(Xrm.Page.context.getClientUrl() + "/XRMServices/2011/OrganizationData.svc/AnnotationSet?" + "$select=NoteText&$filter=ObjectId/Id eq guid'" + Xrm.Page.data.entity.getId() + "'&$orderby=CreatedOn desc&$top=1"), true);

req.setRequestHeader('Accept', 'application/json');

req.setRequestHeader('Content-Type', 'application/json; charset=utf-8');

req.onreadystatechange = function() {


if (this.readyState === 4) {

req.onreadystatechange = null;

if (this.status === 200) {

var note = JSON.parse(req.responseText).d;
var results = note.results;
var NoteText = results[0].NoteText;
var newnote = Xrm.Page.getAttribute("new_lastcomment").setValue(NoteText);
}
}

};

req.send();


}

new_lastcomment 是隐藏字段。我现在想做的是,如果用户点击保存并关闭,停止保存事件,重新加载页面,并使用脚本关闭表单。这是该函数的代码:

function save(executionObj) {
var savestate = executionObj.getEventArgs.getsavemode();
if (savestate == 2) {
executionObj.getEventArgs().preventDefault();
window.location.reload(true);
Xrm.Page.data.entity.save("saveandclose");
}
}

然而,当我测试此代码时,我在尝试保存和关闭时收到以下消息:

此字段的自定义事件出错。字段:crmForm,事件:onsave,错误:对象不支持属性或方法“getsavemode”

但是,一旦我单击“确定”,脚本就会关闭并且 View 会按照我的需要进行更新!但是现在有一个问题,因为我不希望每次点击保存并关闭时弹出此错误消息。为了在此处添加更多深度,我将这两个函数作为 onsave 事件运行,并且对于保存函数,我选中了“将执行上下文作为第一个参数传递”。我试图在不选中此框的情况下运行它,并收到一个错误,指出该值未定义,但再次单击“确定”后,表单将关闭并更新 View 。为什么现在出现这个错误?

编辑:@Arthur 表单现在正在刷新,但我仍然收到与之前相同的错误消息。

最佳答案

通常,只要表单发生更改,就会触发“isdirty”标志。

此标志让 CRM 知道对相关表单进行了修改,并确保显示“有未保存的更改”对话框。

我的猜测是,当您更新文本框时,此标志不会被触发。

如果你把

console.log(Xrm.Page.data.entity.getIsDirty())

在您的 javascript 中检查生成的代码,它说的是真还是假?

如果它是假的,你需要使用设置脏标志

Xrm.Page.data.setFormDirty() 

编辑:我认为这不再是问题所在。请参阅下文。

设置文本框的值后,尝试执行此操作:

Xrm.Page.data.refresh(save);

应该保存它,这样保存和关闭按钮就不必了。

关于javascript - 保存并关闭后刷新表单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27043338/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com