注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

微软MVP罗勇的博客

微软MVP罗勇,www.luoyong.me

 
 
 

日志

 
 

Dynamics CRM插件开发教程之:Update类型插件实例之一  

2013-12-20 08:55:28|  分类: CRM插件 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

关注本人微信公众订阅号: 微软动态CRM专家罗勇 ,回复87或者20131220可方便获取本文,同时可以在第一时间得到我发布的最新的博文信息,follow me! 

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

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

Dynamics CRM插件开发教程之:Update类型插件实例之一 - 罗勇 - 罗勇的博客
 

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

Dynamics CRM插件开发教程之:Update类型插件实例之一 - 罗勇 - 罗勇的博客

 

 出来的Postnew_TestUpdate.cs如下所示:

Dynamics CRM插件开发教程之:Update类型插件实例之一 - 罗勇 - 罗勇的博客

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

            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插件开发教程之:Update类型插件实例之一 - 罗勇 - 罗勇的博客

 

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

Dynamics CRM插件开发教程之:Update类型插件实例之一 - 罗勇 - 罗勇的博客

 

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

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

 素格格新疆特产店--做最好新疆特产的搬运工。

本店由博主的新疆老婆开设,搬运各种最好的新疆特产,是自用,送礼,年货,孝敬长辈特别是(岳)父母的首选!
Dynamics CRM插件开发教程之:Update类型插件实例之一 - 罗勇 - 罗勇的博客
 
  评论这张
 
阅读(663)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017