以编程方式在Dynamics CRM 2011中注册OnLoad处理程序(用于表单)

时间:2012-08-02 10:28:50

标签: javascript dynamics-crm dynamics-crm-2011

有没有办法在代码中注册OnLoad()处理程序?

实施例

脚本作为表单库(自定义表单等)添加。它包含只在加载表单后才能执行的代码。我想可以使用setTimeout() / setInterval()来完成,并检查Xrm.Page.data对象左右,但还有其他方法吗?

3 个答案:

答案 0 :(得分:3)

首先,您为什么要以编程方式进行此操作?

  • 表单属性 - >事件处理程序 - > OnLoad - >添加 - >在加载表单后放置要执行的函数。

否则,您可以使用jQuery以编程方式执行此操作。像这样:

$(document).ready(function() {
     // your code
});

当然,您必须在表单的库中添加jQuery。

小心使用jQuery ready事件。数据是异步检索的。在CRM加载完成之前,jQuery ready事件可能会触发。

答案 1 :(得分:0)

一个非常古老的问答,但是非常错误。请不要使用jQuery执行此操作。表单事件以formxml注册。如果您希望代码作为解决方案的一部分工作,则需要以与UI相同的方式更新formxml。

答案 2 :(得分:0)

我知道这个问题很老,我们现在有了CRM 2016。最近在尝试修复CRM 2016中的错误时。 https://community.dynamics.com/crm/f/117/t/186877

我需要调用/添加一个函数,例如function abc() OnLoad的{​​{1}} All Forms

我是以下面的方式完成的。希望这对某人有所帮助。

  1. https://www.xrmtoolbox.com/
  2. 下载XrmToolBox
  3. 使用XrmToolBox中的All Entities插件,将Form Libraries Manager函数所在的JS文件添加到CRM中的所有表单中,如果需要,则将其添加到所选表单中。
  4. 在您添加到所有表单的JS文件中,在第一行添加以下内容。

    abc()
  5. enter image description here

    使用上述过程将在每个表单的Load上调用setTimeout(function () { abc(); }, 1500); ,而无需在每个表单上手动添加处理程序。