【发布时间】:2021-04-26 13:05:17
【问题描述】:
如果输入的“dni”值已被另一个“人”注册,我想阻止表单保存,我试图阻止表单在其 onSave 事件中保存,然后如果我的条件匹配,我会然后保存表格。所以我做了以下代码:
function saveDni(executionContext) {
try {
const formContext = executionContext.getFormContext();
const currentDni = formContext.getAttribute("cr6ff_dni").getValue();
executionContext.getEventArgs().preventDefault();
var fetchXml = [
"<fetch top='1'>",
" <entity name= 'cr6ff_person'>",
" <filter>",
" <condition attribute='cr6ff_dni' operator='eq' value='", currentDni, "'/>",
" </filter>",
" </entity>",
"</fetch>",
].join("");
fetchXml = "?fetchXml=" + encodeURIComponent(fetchXml);
Xrm.WebApi.retrieveMultipleRecords("cr6ff_person", fetchXml).then(
(result) => {
if (result.entities.length == 0) {
formContext.data.entity.save();
}
}
)
}
catch(error) {
console.log("An error has occurred while validating the user's data.");
}
问题是,当 save() 方法触发时,它也会再次触发这个函数,所以我陷入了循环。关于如何解决这个问题的任何想法?
【问题讨论】:
-
您可以将该字段设置为备用键,而不是 javascript,这样您就可以强制成为唯一的 docs.microsoft.com/en-us/dynamics365/customerengagement/…
-
这很聪明!我会牢记这一点,以便在未来的解决方案中使用
标签: javascript forms event-handling dynamics-crm microsoft-dynamics