频道栏目
首页 > 资讯 > HTML 5 > 正文

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

16-08-20        来源:[db:作者]  
收藏   我要投稿

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

方法一:

注:

通过 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……

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

方法二:

思考中……

相关TAG标签
上一篇:台积电:绝大多数7nm客户都会转向6nm_IT新闻_博客园
下一篇:最后一页
相关文章
图文推荐

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站