当前位置: 移动技术网 > IT编程>网页制作>Html5 > DynamicsCRM2015通过JS控制下拉框实现国家省市级联

DynamicsCRM2015通过JS控制下拉框实现国家省市级联

2018年11月09日  | 移动技术网IT编程  | 我要评论

前言:最近颇为烦恼的一个问题,特地记录下来以备参考。

方法一:

注:

通过 js 操作crm里类型为选项组的栏位方法:

1. 清除选项组:xrm.page.getcontrol("controlid").clearoptions();

2. 添加选项组选项:xrm.page.getcontrol("controlid").addoption({value:0, text:"显示的值"});

备注(重要):通过 js 添加的选项组项的值(value)必须先在栏位对应的选项组中有对应的值,不然即使绑定了,选中也无法显示在页面上

操作页面选项时最终显示在页面上的值是“栏位对应的选项的值”;

意思是假设通过js绑定了value=0,text="js绑定"选项,而栏位中添加了个值为0的,标签为“栏位绑定”的选项;

当操作页面选中“js绑定”时,crm会自动查找预先绑定过的值,如果则无法显示,如果找到会显示对应的标签,如显示“栏位绑定”。

因为上面的问题,所以如果有别的更好方法,还是不建议用这个方法(听说lookup方法可以实现级联,再研究).

不多说,具体实现如下:

--------------------------------------------- 分割线 ---------------------------------------------

crm js代码:

 


//获取select元素 var countryid = "new_testcountry"; var provinceid = "new_state"; var cityid = "new_test_city"; var countryobj = xrm.page.getcontrol(countryid ); var provinceobj = xrm.page.getcontrol(provinceid); var cityobj = xrm.page.getcontrol(cityid); //初始化地区下拉菜单 function initialize() { //清空已绑定值 countryobj.clearoptions(); var countrystr = "australia,belgium,cambodia,canada,switzerland,china,france,germany,hong kong,india,indonesia,ireland,israel,italy,japan,korea,kuwait,lebanon,luxembourg,macao,malaysia,netherlands,new zealand,philippines,sweden,singapore,south africa,sweden,taiwan,thailand,united kiongdom,usa,vietnam"; var countryarray = countrystr.split(','); for(var i=0; i= 100) i = i+1; val = i; break; } countryobj.addoption({value:val, text:countryarray[i]}); } provincedel(); //绑定onchange事件 xrm.page.getattribute(countryid).addonchange(function(){ countryselchange(); }) xrm.page.getattribute(provinceid).addonchange(function(){ provinceselchange(); }) setoptions(); } //加载下拉框设置的值(更新) function setoptions() { var countryentity = xrm.page.data.entity.attributes.get(countryid); var provinceentity = xrm.page.data.entity.attributes.get(provinceid); var cityentity = xrm.page.data.entity.attributes.get(cityid); countryentity.setvalue(countryentity._attribute["$v_1"]); provinceentity.setvalue(provinceentity._attribute["$v_1"]); cityentity.setvalue(cityentity._attribute["$v_1"]); } //下拉列表改变事件 function countryselchange() { provincedel(); provinceadd(); } //下拉列表改变事件 function provinceselchange() { citydel(); cityadd(); } //清空 function provincedel() { provinceobj.clearoptions(); citydel(); } //清空 function citydel() { cityobj.clearoptions(); } //添加省 function provinceadd() { var provincelist = []; provincelist[0] = [100, "china", "安徽省,澳门,北京市,重庆市,福建省,甘肃省,广东省,广西省,贵州省,海南省,河北省,黑龙江省,河南省,湖北省,湖南省,江苏省,江西省,吉林省,辽宁省,内蒙古自治区,宁夏回族自治区,青海省,山东省,上海市,陕西省,山西省,四川省,台湾省,天津市,香港,新疆维吾尔自治区,西藏自治区,云南省,浙江省"]; for(var i=0; i


打开对应的表单,找到最上方的 ‘表单属性’ ,在事件里添加表单程式库,将上述代码放入你的js文件中,

 

然后在下方的事件处理常式中的onload事件中添加程式库,调用上诉initialize 函数;

在完成表单后在onsave事件中调用上述saveform函数。

栏位中添加三个栏位,名称分别是上方的 new_country, new_province, new_city;皆为选项组类型,

对应的选项组值需要和js中对应,比如new_country 有标签为“china”,值为100;new_province 有标签为“安徽省”,值为100;标签为“福建省”,值为104……

========================== 方法分割线 =============================

方法二:

思考中……

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网