time 
设为首页】【收藏本站
当前位置: 主页 > ERP > CRM > 【Dynamics CRM插件开发教程】11、Update类型插件实例之一

【Dynamics CRM插件开发教程】11、Update类型插件实例之一

时间:2014-10-17 16:17 点击:558次 字体:[ ]




 

今天我们讲述Update类型的插件,和前面Create插件非常类似的地方我就简单说明下,各位看官可以自己动手去试验,有问题可以给我留言。

选择实体,右击,选择 Create Plug-in

【Dynamics CRM插件开发教程】11、Update类型插件实例之一_www.fengfly.com
 

 我的修改的地方如下,我用的Post-Operation阶段,默认情况下,Update消息会监控所有字段的变更,一般不要这么做,因为这么做插件运行会非常频繁,我这里只演示监控一个字段,就是 两个选项字段,方法很简单,点击Filtering Attributes旁边的 ... 按钮,选择你要监控的字段。我这里为了查看到编辑前后字段的值是什么,所以使用了两个映像(Image),设置如Pre Image Alias和Post Image Alias所示。点击两次OK按钮,关闭这两个窗口。

【Dynamics CRM插件开发教程】11、Update类型插件实例之一_www.fengfly.com

 

 出来的Postnew_TestUpdate.cs如下所示:

【Dynamics CRM插件开发教程】11、Update类型插件实例之一_www.fengfly.com

 我这来演示用的代码如下:

            IPluginExecutionContext context = localContext.PluginExecutionContext;
            IOrganizationService service = localContext.OrganizationService;
            Entity preImageEntity = (context.PreEntityImages != null && context.PreEntityImages.Contains(this.preImageAlias)) ? context.PreEntityImages[this.preImageAlias] : null;
            Entity postImageEntity = (context.PostEntityImages != null && context.PostEntityImages.Contains(this.postImageAlias)) ? context.PostEntityImages[this.postImageAlias] : null;

            // TODO: Implement your custom Plug-in business logic.
            var s = "开始执行本实体Update消息的Post阶段插件代码。";
            if(preImageEntity.Contains("new_twooptions"))
            {
                s += "new_twooptions变更前的值是:";
                s += preImageEntity.GetAttributeValue<bool>("new_twooptions").ToString();
            }
            if (postImageEntity.Contains("new_twooptions"))
            {
                s += ";new_twooptions变更后的值是:";
                s += postImageEntity.GetAttributeValue<bool>("new_twooptions").ToString();
            }
            Entity postEntity = new Entity("post");
            postEntity["text"] = s;
            postEntity["source"] = new OptionSetValue(1);   // 自动产生的
            postEntity["regardingobjectid"] = new EntityReference(context.PrimaryEntityName, context.PrimaryEntityId);
            service.Create(postEntity);

下面我们来测试下,新建一条记录如下并保存。

【Dynamics CRM插件开发教程】11、Update类型插件实例之一_www.fengfly.com

 

我将两个选项字段的值从 否 改成 是,然后保存,需要刷新下页面,按F5刷新下:

【Dynamics CRM插件开发教程】11、Update类型插件实例之一_www.fengfly.com

 

 我们再从是改成否,保存,刷新看看:

【Dynamics CRM插件开发教程】11、Update类型插件实例之一_www.fengfly.com
 
如果我更改别的字段,会不会触发这段代码的运行呢?我更改了 名称 字段,然后保存,刷新,大家可以看到,公告的内容还是一样的,所以更改非监控字段并不会触发本插件的运行。
【Dynamics CRM插件开发教程】11、Update类型插件实例之一_www.fengfly.com
 

 



本文地址 : http://www.fengfly.com/plus/view-215423-1.html
标签: Dynamics CRM 插件开发 Update类型
------分隔线----------------------------
最新评论 查看所有评论
发表评论 查看所有评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
验证码: