如何在Dynamics CRM中获取表单级通知及字段级原生错误消息?
Dynamics CRM 获取表单级与字段级通知方法
一、获取表单级通知
直接调用formContext.ui.getFormNotifications()方法,该方法会返回所有表单级通知的数组,每个通知对象包含id、message、level(可选值:ERROR/WARNING/INFO)等核心属性。示例代码:
// 获取全部表单级通知 const formNotifications = formContext.ui.getFormNotifications(); // 遍历输出通知详情 formNotifications.forEach(notification => { console.log(`通知ID: ${notification.id}, 消息内容: ${notification.message}, 级别: ${notification.level}`); });
二、获取字段级通知(含微软原生错误)
Dynamics CRM客户端脚本确实没有提供getNotification()这类直接获取字段级通知的官方方法,但可以通过以下两种方式解决:
1. 提取原生错误的DOM元素内容
微软原生抛出的字段错误,会渲染在对应字段控件的DOM节点附近,可通过DOM选择器定位并读取错误文本:
// 获取目标字段控件 const fieldControl = formContext.getControl("fieldname"); // 获取控件对应的DOM元素 const domElement = fieldControl.getDomElement(); // 查找原生错误提示元素(不同UI版本可能需要调整选择器) const errorElement = domElement.parentNode.querySelector(".ms-crm-Field-Error"); if (errorElement) { console.log("字段原生错误消息: " + errorElement.textContent.trim()); }
注意:DOM选择器可能随Dynamics CRM(Dataverse)的UI版本变化,需根据实际页面结构微调。
2. 自定义存储字段通知记录
如果是自己通过脚本设置的字段级通知,可以在调用setNotification()时,同步将通知信息存储在全局对象中,后续直接读取该对象即可:
// 全局对象存储自定义字段通知 window.customFieldNotifications = {}; // 设置字段通知并同步存储 function setCustomFieldNotification(controlName, message, uniqueId) { const control = formContext.getControl(controlName); control.setNotification(message, uniqueId); // 记录通知信息 window.customFieldNotifications[controlName] = { message: message, notificationId: uniqueId }; } // 获取自定义设置的字段通知 function getCustomFieldNotification(controlName) { return window.customFieldNotifications[controlName] || null; }
内容的提问来源于stack exchange,提问作者Suga
相关产品推荐
相关产品推荐

