我是微软Dynamcis 365 & Power Platform方面的工程师罗勇,也是2015年7月到2018年6月连续三年Dynamics CRM/Business Solutions方面的微软最有价值专家(Microsoft MVP),欢迎关注我的微信公众号 MSFTDynamics365erLuoYong ,回复340或者20190526可方便获取本文,同时可以在第一间得到我发布的最新博文信息,follow me!
在做定制的时候发现为实体标准的字段statuscode添加选项的时候没有办法指定Value,如下图,是只读的。
如果在某些特定场景下需要指定值呢,咋办?
可以利用消息InsertStatusValueRequest来做,简单代码如下,亲自测试有效。
更多实例参考官方文档:InsertStatusValueRequest Class
using Microsoft.Xrm.Sdk; using Microsoft.Xrm.Sdk.Messages; using Microsoft.Xrm.Tooling.Connector; using System; namespace ConsoleApp { class Program { static void Main(string[] args) { CrmServiceClient crmSvc = new CrmServiceClient(@"AuthType=Office365;Url=https://luoyongdemo.api.crm.dynamics.com;UserName=crmadmin@luoyongdemo.onmicrosoft.com;Password=*****"); if (!crmSvc.IsReady) { throw new Exception("Crm Service is not ready!" + crmSvc.LastCrmError + crmSvc.LastCrmException.Message); } InsertStatusValueRequest req = new InsertStatusValueRequest() { Label = new Label("Created by code", 1033), StateCode = 0, Value = 100000100, EntityLogicalName = "new_luoyongdemo", AttributeLogicalName ="statuscode" }; crmSvc.Execute(req); Console.WriteLine("Execution successfully..."); Console.ReadKey(); } } }
当然如果不是statuscode字段,普通的选项集字段请用:InsertOptionValueRequest Class ,分为全局选项集和非全局选项集,具体参考官方实例,我这里不赘述了。
如果要改动statecode的显示值呢,请使用 UpdateStateValueRequest Class ,具体实例参考官方文档,我这里不赘述了。