openlang

从 TypeScript 访问 Dynamics CRM

我的 CRM 代码在网页资源中运行,所以要获取实体数据,就得写成

window.parent.Xrm.Page...etc

这样来读取数据。

可惜用 typescript 编写时,这个表达式无法编译。现在我手动把 window.parent 加到 Xrm.Page 前面……(Xrm 类型定义已经装好了),这有点违背使用 TypeScript 的初衷。有没有类型定义或其他办法,让我能像平常一样简洁地访问 window.parent.Xrm?我用的编辑器是 Visual Studio

从英语翻译查看原文

后续讨论 2

顺着彼此的依据读下去
  1. 固定链接

    我觉得通过 window.Xrm 对象获取根引用这一步无法避免,不过把访问封装起来,就只需要做一次。

    如果装好了合适的 ts 模板,也就是下面这个

    Install-Package xrm.TypeScript.DefinitelyTyped

    这么简单的写法应该就可以

    class CrmAccess {
      constructor(private context: Xrm.XrmStatic) { }
      read() {
        //stay within the typed environment
        //return this.context.Page....;
      }
    }

    然后按下面的方式,只初始化一次

    var crmAccess = new CrmAccess(window.Xrm);
    crmAccess.read();
    从英语翻译查看原文
  2. 固定链接

    我在 typescript (/questions/tagged/typescript) 中写 (<any>window.parent).Xrm.,这样使用 window.parent.Xrm 就不会出现编译错误。比如下面这样。

    let titleValue = (<any>window.parent).Xrm.Page.data.entity.attributes
      .get("name").getValue()
    从英语翻译查看原文

同一个问题的其他角度

  1. 在 Java Mail 中显示发件人名称而非邮箱地址

    我通过 Java Mail API 发送消息。邮件到达后,收件箱显示的是发件地址。我想用一些文本替代这个地址。这应该是可以的,因为我收到的 facebook 邮件在收件箱里显示 "Facebook - Message title",而不是 "mail…

    回复 2最近活动 java
  2. Gleam 的 HTTP 响应头需要怎样的日期格式?

    我想发送一个 Date 响应头。所需的格式如下。 这是我目前尝试的代码。

    回复 3最近活动 gleam
  3. 用 OpenCV C++ 快速将 Mat 的一块区域填成零?

    把灰度 Mat 图像中的一块区域填成零(或者其他常数值),最有效的方法是什么? 应该先创建全零图像,再调用 copyTo(),还是有更好的办法?

    回复 3最近活动 cpp