代码之家  ›  专栏  ›  技术社区  ›  user254875486 TM Creative

通过变量检索MS CRM字段的值

  •  1
  • user254875486 TM Creative  · 技术社区  · 15 年前

    我有一个关于Dynamics CRM 4.0 Web服务的问题。我一直在使用它将记录从CRM获取到ASP.NET。在请求和转换之后,可以通过以下方式访问列的值(例如联系人);

    BusinessEntity be = getBusinessEntity(service, crmGuid, type, colnames);
    contact tmp = (contact)be;
    
    Response.Write("firstname: " + tmp.firstname + "<BR>");
    Response.Write("lastname: " + tmp.lastname+ "<BR>");
    

    colnames ),例如在本例中 {"firstname", "lastname"} .

    科尔曼 可能会变得相当大(并且可能没有硬编码),所以我不想逐一介绍它们。有没有一种方法可以使用

    for(int i = 0; i < colnames.length; i++)
    {
        Response.write(colnames[i] + ": " + tmp.colnames[i] + "<BR>");
    }
    

    如果我现在这样做,我会得到一个错误,colnames不是tmp的字段。 有什么想法吗?

    1 回复  |  直到 14 年前
        1
  •  1
  •   John Hoven    15 年前

    不使用BusinessEntity(除非使用反射)。DynamicEntity可按从属性派生的类型枚举。您必须执行类似的操作(我是从内存中执行此操作的,因此可能无法编译)。。。

    for(int i = 0; i < colnames.length; i++)
    {
      string colName = colnames[i];
      foreach(Property prop in tmp)
      {  
        if (prop.name != colName)
          continue;
        if (prop is StringProperty)
        {
           var strProp = prop as StringProperty;
           Response.Write(String.Format("{0}: {1}<BR />", colName, strProp.Value));
        } 
        else if (prop is LookupProperty)
        {
          ...
         }
        ... for each type deriving from Property
    
      }
    }
    

    对附注1(篇幅)的答复:

    你能给我举个例子说明你在用什么吗。如果只查看基本类型(属性),则无法看到value属性-需要转换为适当的类型(StringProperty等)。

    string firstname = (string)tmp["firstname"];
    

    请注意,如果使用此方法,将获得值(string、CrmNumber、Lookup),而不是整个属性(StringProperty、CrmNumber属性等)。

    这回答了你的问题吗?此外,我建议使用SDK程序集,而不是web引用。它们更容易使用。但是,如果您选择使用web引用,SDK下载有一个帮助程序类列表。在SDK中搜索“Helper”。