我一直在寻找一种方法来获取CRM表单中所有脏字段的列表,以确定更改内容并需要保存在浏览器控制台中。这将帮助我调试一般的javascript或其他CRM相关问题
我怎样才能实现这个目标?
答案 0 :(得分:0)
您可以使用以下代码作为参考
var attribs = Xrm.Page.data.entity.attributes.get();
获取from中所有字段的列表,然后调用函数getIsDirty()
作为
var filterDirty = attribs.filter(function(elem,index,attribs){
var name = elem.getName();
return (Xrm.Page.getAttribute(name).getIsDirty() === true);
});
现在filterDirty
将包含所有脏字段的数组,您只需将其打印为地图
filterDirty.map(function(e){ console.log(e.getName()); });
注意:只要确保Xrm可用,就可以看到为什么在我here
上面描述的内容之前还有其他代码?整个代码看起来像这样
// get the correct frame
for(var i=0;i<5;i++) //loop through 0 to 4
if(frames[i].Xrm.Page.ui != undefined) //check if undefined
{
Xrm = frames[i].Xrm; //assign Xrm
console.info("~: Xrm updated with frame " + i + " :~"); //show info
break; //breakout the loop
}
//Query
var attribs = Xrm.Page.data.entity.attributes.get();
//Filter
var filterDirty = attribs.filter(function(elem,index,attribs){
var name = elem.getName();
return (Xrm.Page.getAttribute(name).getIsDirty() === true);
});
//print
filterDirty.map(function(e){
console.log(e.getName());
});
答案 1 :(得分:0)
打开开发人员工具(F12),选择控制台,然后输入以下内容:
Xrm.Page.data.entity.getDataXml()
如果返回错误“未捕获的TypeError:无法读取null的属性'实体'”,请尝试
frames[0].Xrm.Page.data.entity.getDataXml()
或
frames[1].Xrm.Page.data.entity.getDataXml()
返回的Xml将以XML形式列出脏字段及其值。例如
<contact><firstname>changed on form but not saved in db</firstname></contact>