我正在编写一个Javascript来点击CRM 2011实体表单中的自定义功能区按钮来调用外部链接。在javascript我正在检查表单是否脏。如果表单是脏的(表示某些字段由用户修改),则JScript将使用 Xrm.Page.data.entity.save()强制保存表单。但是,当强制字段没有填写时,强制保存将不会发生,我必须显示一些自定义消息来填充这些字段,终止控制流并且不应该打开外部链接。如何获取表单是否已保存..?
一段代码如下:
function buttonOnClick() {
if (Xrm.Page.data.entity.getIsDirty())
{
Xrm.Page.data.entity.save();
}
else
{
window.open('http://www.google.com', 'name', 'width=900,height=800');
}
}
答案 0 :(得分:3)
当你说“表格已被保存”时,你的意思是第一次吗?如果是这样,您可以查询表单类型: -
Xrm.Page.ui.getFormType();
(例如,它是在创建还是更新中)。如果表单已经处于更新模式,那么您可以检查表单是否脏,如您所说。如果您想知道哪些必填字段尚未完成,您还可以循环遍历表单上的属性并查询它们是否为Business Required: -
Xrm.Page.data.entity.attributes.get("myAttribute").getRequiredLevel();
并将此消息添加到用户的警告消息中。
答案 1 :(得分:0)
您可以添加自己的OnSave方法来验证字段,并根据它们是否有效返回值。
e.g。
Xrm.Page.data.entity.addOnSave(function() {
var isValid = VerifyOnSave();
if (isValid) {
//continue
}
else {
//show errors, cancel save
}
);
function VerifyOnSave()
{
//<insert validation logic here>
return true;
}
没有明确告诉您保存的表单,但会告诉您表单是否有效,可能是也可能不够。
答案 2 :(得分:0)
您可以尝试这种方式:
var entitySaved;
function OnLoad(){
entitySaved=false;
}
function OnSave(){
entitySaved=true;
}
function myFunction(){
if(entitySaved){
//do your logic here
}
}
当然,您必须通过单击表单属性来从CRM解决方案中添加表单事件。