有时我们新建了一些bool类型的字段,后边业务要求这些bool类型的字段默认空值,只可以人员自己赋值,但是dynamics crm的bool类型字段是没有办法赋默认值为空的,这个时候就需要前端JS控制了。
应用场景:用户新建记录的时候,页面中的所有bool类型字段默认为空值,只可以手动赋值;修改记录的时候,如果原本的bool字段有值,就保持原有的bool类型字段值不变,如果没有值,也要默认为空值。
如图,系统中无法设置默认值为空
废话不多说,直接上代码
function OnLoad() {
//表单中所有更改的字段
var getChangedFieldName= CollectDirtyFieldNames();
//所有的bool类型值
var boolField=["new_bool01","new_bool02","new_bool03","new_bool04"];
// 过滤getChangedFieldName数组,保留存在于boolField中的元素
var filteredNames = getChangedFieldName.filter(name => boolField.includes(name));
//给bool字段 更改默认空值
for (var i = 0; i < filteredNames.length; i++) {
Xrm.Page.getAttribute(filteredNames[i]).setValue(null);
}
}
//获取表单中所有更改的字段名
function CollectDirtyFieldNames() {
var dirtyFieldNames = [];
var attributes = Xrm.Page.data.entity.attributes;
for (var i = 0; i < attributes.getLength(); i++) {
var attribute = attributes.get(i);
if (attribute.getIsDirty()) {
dirtyFieldNames.push(attribute.getName());
}
}
return dirtyFieldNames;
}
页面加载的时候执行OnLoad方法,获取所有更改的字段名,boolField里存放的是这个页面中使用的bool类型字段名。后续如果还有其他的bool类型字段值需要在boolField数组中添加就行