none
plug in中如何得到当前操作的实体。 RRS feed

  • 问题

  • 我的“客户”有个属性,叫“审核状态”,如果此“客户”已经“审核”,那么不允许删除。
    在plug in的Execute(IPluginExecutionContext context)中,context这个参数,我如何才能得到当前操作的实体,以及这个实体是否可以得到我自定义的属性,请各位大侠指点指点。

    还有,我看SDK上写的
      if (context.InputParameters.Properties.Contains("Target") && context.InputParameters.Properties["Target"] is Microsoft.Crm.Sdk.DynamicEntity)
    里面的类型是DynamicEntity,怎么我的弄出来的是Moniker这个类型。
    2009年8月24日 2:16

全部回复

  • if (context.MessageName =="Delete")
    {
    if (context.InputParameters.Properties.Contains("Target"))
    {
    Moniker monikerentity = null;
    monikerentity = (Moniker)context.InputParameters.Properties[ParameterName.Target];
    string Id= monikerentity.Id.ToString();
    }
    }
    2009年8月24日 3:29
  • Moniker 类型只有俩个属性,ID,和NAME。分别是指当前操作的记录和主键和表。我的目的是直接得到一个当前操作的实体对象,此对象不但有CRM系统的属性,还有我自定义的属性。小宁给的方法还要通过ID再到数据库里查一下。有没有不需要二次查询的写法.
    2009年8月24日 3:47
  • context.EntityType 试过了吗?
    Darren Liu | 刘嘉鸿 | MS CRM MVP | English Blog: http://msdynamicscrm-e.blogspot.com | Chinese Blog: http://liudarren.spaces.live.com
    2009年8月24日 15:55
    版主
  • 回darrenliu版主的话,没有发现IPluginExecutionContext接口提供EntityType 属性啊。

    2009年8月25日 1:03
  • 你用Delete的Pre Image應該可以吧.
    不過我覺得如果能在UI檢查就要在UI檢查,throw一個Error來取消刪除不是什麽好事情.
                            if (!context.PostEntityImages.Contains("preImage"))
                            {
                                throw new Exception("pre image not found");
                            }

                            DynamicEntity dy = (DynamicEntity)context.PostEntityImages["preImage"];
                           dy["审核状态"]....
    2009年8月25日 1:08
  • 回小寧的话:我也想在ui中检查,但是我不知道如何在UI中截获删除事件。我先试试你提供的方法。
    2009年8月25日 2:15