Dynamics CRM 2015 通过JS控制下拉框实现国家省市级联
2016-08-05 18:36
411 查看
前言:最近颇为烦恼的一个问题,特地记录下来以备参考。
方法一:
注:
通过 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代码:
打开对应的表单,找到最上方的 ‘表单属性’ ,在事件里添加表单程式库,将上述代码放入你的JS文件中,
然后在下方的事件处理常式中的OnLoad事件中添加程式库,调用上诉 initialize 函数;
在完成表单后在OnSave事件中调用上述SaveForm函数。
栏位中添加三个栏位,名称分别是上方的 new_Country, new_Province, new_City;皆为选项组类型,
对应的选项组值需要和JS中对应,比如new_Country 有标签为“China”,值为100;new_Province 有标签为“安徽省”,值为100;标签为“福建省”,值为104……
========================== 方法分割线 =============================
方法二:
思考中……
方法一:
注:
通过 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代码:
<pre name="code" class="javascript">//获取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<CountryArray.length; i++) { var val=0; switch(CountryArray[i]) { case "China": var = 100; break; default: if(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<provinceList.length; i++) { if(CountryObj.getAttribute(CountryId).getText().toUpperCase() == provinceList[i][1].toUpperCase()) { var val = provinceList[i][0] var province = provinceList[i][2]; AddOne(province, ProvinceObj, val); } } } //添加市 function CityAdd() { var PCList = []; PCList[0] = [1000100,"安徽省","安庆市,蚌埠市,亳州市,池州市,滁州市,阜阳市,合肥市,淮北市,淮南市,黄山市,六安市,马鞍山,铜陵市,芜湖市,宿州市,宣城市"] PCList[1] = [1000200,"澳门","澳门"] PCList[2] = [1000300,"北京市","北京市",""] PCList[3] = [1000400,"重庆市",""] PCList[4] = [1000500,"福建省","福州市,龙岩市,南平市,宁德市,莆田市,泉州市,三明市,厦门市,漳州市"] PCList[5] = [1000600,"甘肃省",""] PCList[6] = [1000700,"广东省","潮州市,东莞市,佛山市,广州市,河源市,惠州市,江门市,揭阳市,茂名市,梅州市,清远市,汕头市,汕尾市,韶关市,深圳市,阳江市,云浮市,湛江市,肇庆市,中山市,珠海市"] PCList[7] = [1000800,"广西省",""] PCList[8] = [1000900,"贵州省",""] PCList[9] = [1001000,"海南省",""] PCList[10] = [1001100,"河北省","保定市,沧州市,承德市,邯郸市,衡水市,廊坊市,秦皇岛,石家庄,唐山市,邢台市,张家口"] PCList[11] = [1001200,"黑龙江省",""] PCList[12] = [1001300,"河南省","安阳市,鹤壁市,济源市,焦作市,开封市,洛阳市,漯河市,南阳市,平顶山,濮阳市,三门峡,商丘市,新乡市,信阳市,许昌市,郑州市,周口市,驻马店"] PCList[13] = [1001400,"湖北省","鄂州市,恩施市,黄冈市,黄石市,荆门市,荆州市,十堰市,随州市,武汉市,咸宁市,襄阳市,孝感市,宜昌市"] PCList[14] = [1001500,"湖南省","常德市,郴州市,衡阳市,怀化市,娄底市,邵阳市,湘潭市,湘西自治州,益阳市,永州市,岳阳市,张家界,长沙市,株州市"] PCList[15] = [1001600,"江苏省","常州市,淮安市,连云港,南京市,南通市,苏州市,泰州市,无锡市,宿迁市,徐州市,盐城市,扬州市,镇江市"] PCList[16] = [1001700,"江西省",""] PCList[17] = [1001800,"吉林省",""] PCList[18] = [1001900,"辽宁省",""] PCList[19] = [1002000,"内蒙古自治区",""] PCList[20] = [1002100,"宁夏回族自治区",""] PCList[21] = [1002200,"青海省",""] PCList[22] = [1002300,"山东省",""] PCList[23] = [1002400,"上海市",""] PCList[24] = [1002500,"陕西省",""] PCList[25] = [1002600,"山西省",""] PCList[26] = [1002700,"四川省",""] PCList[27] = [1002800,"台湾省",""] PCList[28] = [1002900,"天津市",""] PCList[29] = [1003000,"香港",""] PCList[30] = [1003100,"新疆维吾尔自治区",""] PCList[31] = [1003200,"西藏自治区",""] PCList[32] = [1003300,"云南省",""] PCList[33] = [1003400,"浙江省","杭州市,湖州市,嘉兴市,金华市,丽水市,宁波市,衢州市,绍兴市,台州市,温州市,舟山市"] for(var i=0; i<PCList.length; i++) { if(ProvinceObj.getAttribute(ProvinceId).getText().toUpperCase() == PCList[i][1].toUpperCase()) { var val = PCList[i][0] var City= PCList[i][2]; AddOne(City, CityObj, val); } } } //添加实现 function AddOne(Str, Obj, val) { if(Str == "") return; var strArray = Str.split(','); for(var i=0; i<strArray.length; i++) { var opt = { text : strArray[i], value : (val+i) }; Obj.addOption(opt, i); } } //保存表单 function SaveForm() { Xrm.Page.data.entity.attributes.get(CountryId).setValue(CountryObj.getAttribute(CountryId).getText()); Xrm.Page.data.entity.attributes.get(ProvinceId).setValue(ProvinceObj.getAttribute(ProvinceId).getText()); Xrm.Page.data.entity.attributes.get(CityId).setValue(CityObj.getAttribute(CityId).getText()); }
打开对应的表单,找到最上方的 ‘表单属性’ ,在事件里添加表单程式库,将上述代码放入你的JS文件中,
然后在下方的事件处理常式中的OnLoad事件中添加程式库,调用上诉 initialize 函数;
在完成表单后在OnSave事件中调用上述SaveForm函数。
栏位中添加三个栏位,名称分别是上方的 new_Country, new_Province, new_City;皆为选项组类型,
对应的选项组值需要和JS中对应,比如new_Country 有标签为“China”,值为100;new_Province 有标签为“安徽省”,值为100;标签为“福建省”,值为104……
========================== 方法分割线 =============================
方法二:
思考中……
相关文章推荐
- js实现无刷新省市级联
- 通过div透明度实现隐藏div图层效果、通过js控制缩放div效果
- js、jq实现省市级联
- js省市级联实现
- js、jq、实现全国省市级联
- AJAX实现省市级联 JS
- 使用js函数实现的通过输入框中数据的长度来控制光标聚焦位置
- 纯JS实现国家/省/市三级级联
- easyUI实现搜索下拉框,省市的级联下拉框和编辑时的赋值
- 基于外部一个省市联动js框架,实现初始化特定的地址级联
- 通过JS控制CSS实现连帧动画
- Js实现简单的省市级联的效果
- JS实现国家省市三级无刷新联动
- 无限级联 下拉框的实现 ... 呜呜呜 __init_xu js 又增加了一个widget
- js 实现 省市县三级级联
- js实现省市级联
- js中省市级联的实现
- javascript基于DOM实现省市级联下拉框的方法
- JSON+JS实现省市县三级联动下拉框
- js 实现 省市级联