Dynamics CRM 2015 通过JS控制下拉框实现国家省市级联
来源:互联网 发布:穆勒plc手动编程 编辑:程序博客网 时间:2024/06/05 04:16
前言:最近颇为烦恼的一个问题,特地记录下来以备参考。
方法一:
注:
通过 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……
========================== 方法分割线 =============================
方法二:
思考中……
- Dynamics CRM 2015 通过JS控制下拉框实现国家省市级联
- JS控制省市级联
- poi 实现下拉框级联选择省市
- js实现省市级联
- js 实现 省市级联
- Ext省市级联下拉框
- 国家省市级联菜单
- AJAX实现省市级联 JS
- js、jq实现省市级联
- html中得省市下拉框二级级联实现
- 原生js实现下拉级联操作+通过disabled对下拉框不使用
- javascript DOM 省市级联下拉框
- 省市级联下拉框使用感
- jQuery实战-省市级联下拉框
- 如何通过Dynamics CRM 2015修改用户密码
- js实现下拉框三级级联
- js 实现 省市县三级级联
- js实现无刷新省市级联
- GSON解析json数据总结
- Android shape的属性介绍
- 前端重点知识整理(JavaScript)三:闭包
- RedHat下安装Python3步骤
- 读入优化
- Dynamics CRM 2015 通过JS控制下拉框实现国家省市级联
- How To Use MCI to Play AVI/WAVE Files from Memory
- 前端本地客户端压缩图片,兼容IOS,Android,PC、自动按需加载文件
- 图结构练习——最短路径
- telnet连接redis和redis-cli连接redis
- 以通配符(%)开始的like字符串,走索引
- Android EasyClient 云台控制开源流媒体摄像机EasyCamera
- 计算机网络知识点汇总
- POJ 2367 Genealogical tree (拓扑排序)