Dynamics CRM2016 Web API获取实体元数据Picklist属性的Text&Value
来源:互联网 发布:手机cad软件中文版 编辑:程序博客网 时间:2024/05/28 22:11
通过组织服务中获取实体picklist字段的text和value可以通过RetrieveAttributeRequest实现,但在使用web api的今天该怎么实现,本文即来一探究竟,本篇基于SDK中的Query Metadata using the Web API一节。
首先我们要获取到实体的metadataid,代码如下,这个metadataid后面会用到,我这里用的是account实体
string weburi = WebUri + "EntityDefinitions?$filter=LogicalName eq 'account'"; string result = ""; HttpWebRequest req = (HttpWebRequest)HttpWebRequest.Create(weburi); req.Credentials = new NetworkCredential(username, pwd, domain); req.Method = "Get"; req.Accept = "application/json"; req.ContentType = "application/json; charset=utf-8"; req.Headers.Set("OData-MaxVersion", "4.0"); req.Headers.Set("OData-Version", "4.0"); using (HttpWebResponse res = (HttpWebResponse)req.GetResponse()) { StreamReader read = new StreamReader(res.GetResponseStream()); result = read.ReadToEnd(); } JObject jobject = JsonConvert.DeserializeObject<JObject>(result); string id = jobject["value"][0]["MetadataId"].ToString();
获取到了实体的metadataid后就去查询具体的这个实体下面的元数据了,代码如下(根据value值查对应的text),注意代码中有段if-else,即GlobalOptionSet和OptionSet,区别是你的这个picklist是否用到了全局选项集,
string weburi = WebUri + +"EntityDefinitions("+ metadataid + ")/Attributes/Microsoft.Dynamics.CRM.PicklistAttributeMetadata?$select=LogicalName&$expand=OptionSet,GlobalOptionSet"; ; string result = ""; HttpWebRequest req = (HttpWebRequest)HttpWebRequest.Create(weburi); req.Credentials = new NetworkCredential(username, pwd, domain); req.Method = "Get"; req.Accept = "application/json"; req.ContentType = "application/json; charset=utf-8"; req.Headers.Set("OData-MaxVersion", "4.0"); req.Headers.Set("OData-Version", "4.0"); using (HttpWebResponse res = (HttpWebResponse)req.GetResponse()) { StreamReader read = new StreamReader(res.GetResponseStream()); result = read.ReadToEnd(); } JObject jobject = JsonConvert.DeserializeObject<JObject>(result); JArray ja = (JArray)jobject["value"]; string text = ""; if (ja.Count > 0) { for (int i = 0; i < ja.Count; i++) { if (ja[i]["LogicalName"].ToString() == "new_testoption") { if (ja[i]["OptionSet"].ToString() != "") { ja = JsonConvert.DeserializeObject<JArray>(ja[i]["OptionSet"]["Options"].ToString()); for (int j = 0; j < ja.Count; j++) { if (ja[j]["Value"].ToString() == "100000000") { ja = JsonConvert.DeserializeObject<JArray>(ja[j]["Label"]["LocalizedLabels"].ToString()); text = ja[0]["Label"].ToString(); } } } else { ja = JsonConvert.DeserializeObject<JArray>(ja[i]["GlobalOptionSet"]["Options"].ToString()); for (int j = 0; j < ja.Count; j++) { if (ja[j]["Value"].ToString() == "0") { ja = JsonConvert.DeserializeObject<JArray>(ja[j]["Label"]["LocalizedLabels"].ToString()); text = ja[0]["Label"].ToString(); } } } } } }这里的json处理用的是newtonsoft,如果要引用上述代码记得添加newtonsoft的引用,上述代码是根据picklist的value值去查找对应的text的,反之亦然。
0 0
- Dynamics CRM2016 Web API获取实体元数据Picklist属性的Text&Value
- Dynamics CRM2016 Web API之获取查找字段的text及选项集的text
- Dynamics CRM2016 Web API之通过实体的primary key查询记录
- Dynamics CRM2016 Web API之通过实体的primary key查询记录(二)
- Dynamics CRM2016 Web API之更新记录的单个属性字段值
- Dynamics CRM2016 Web Api之查询查找字段的相关属性
- Dynamics CRM2016 Web API之查询单个属性字段的值
- Dynamics CRM2016 Web Api之根据时间查询数据
- Dynamics CRM2016 Web Api之时间字段值的处理
- Dynamics CRM2016 Web API之创建记录
- Dynamics CRM2016 Web API之更新记录
- Dynamics CRM2016 Web API之删除
- Dynamics CRM2016 Web API之Retrieve Multiple
- Dynamics CRM2016 Web Api之分页查询
- Dynamics CRM2016 使用web api来创建注释时的注意事项
- Dynamics CRM2016 解决C#调用web api报错无法显示错误详情的问题
- Dynamics CRM2016 在实体命名时需要注意的事项
- Dynamics CRM2016 Web API之Expand related entities & $ref & $count
- 常用排序算法之希尔排序
- 数据库三大范式
- Revit开发之获取房间边界
- Linaro GCC不支持arm926ej-s
- CentOS7 ping通 telnet不通
- Dynamics CRM2016 Web API获取实体元数据Picklist属性的Text&Value
- /dev/zero和/dev/null
- 模板方法模式详解(包含与类加载器不得不说的故事)
- HashMap的实现原理
- js获取滚动条距离浏览器顶部,底部的高度
- Android 点击通知进入正在运行的程序
- 涉及公共健康问题的实施强制许可办法出台
- 11种将InputStream转换成String的方法以及性能分析
- POJ 2167 Irrelevant Elements