繁体   English   中英

如何使用jQuery在Dynamics CRM中操作DOM

[英]How to manipulate DOM in Dynamics CRM using jQuery

尝试通过使用jQuery的append方法更新字段值来操作DOM。

发现使用普通的javascript或jQuery在Dynamics CRM中不允许DOM操作

因此尝试在源选项卡中添加带有脚本的HTML Web资源:

该函数以项目形式添加,并配置为在OnLoad事件中调用。 但是,它在表单加载之前被调用。

该功能在console执行时效果很好,但在系统调用时不起作用。

  setTimeout(ShowProjectAge, 3000);

  function ShowProjectAge() {

    var createdOn = Xrm.Page.getAttribute("createdon");
    var createdOnDt = new Date(createdOn.$2_2.$2T_2);
    var today = new Date();
    var DiffDays = GetDiffDays(createdOnDt, today);

    //var projectAge = $('#processDuration').html();
    //$('#HeaderTilesWrapperLayoutElement').html(projectAge);
    //$('#HeaderTilesWrapperLayoutElement').css('color','black');

    console.log('The Project Age is ' + DiffDays);
    var div = $('#HeaderTilesWrapperLayoutElement');
    div.text('The Project Age is ' + DiffDays + ' days');
    div.css('color', 'black');
    div.css('font-weight', 'bold');
  }

  function GetDiffDays(date1, date2) {
    var timeDiff = Math.abs(date2.getTime() - date1.getTime());
    return Math.round(timeDiff / (1000 * 3600 * 24));
  }

在完全加载的DOM上, ShowProjectAge效果很好 但是,当从系统调用时,不会加载它。

已尝试使用document.ready

首先,永远不要在CRM中进行任何DOM操作。 这是不值得的。 曾经

其次,可以使用零代码开箱即用地完成此操作:

  1. 创建自定义计算字段
  2. 使用以下公式:DiffInDays(createdon,Now())
  3. 将该字段放在表单上您想要的任何位置

第三,这是完全错误的:

var createdOn = Xrm.Page.getAttribute("createdon");
var createdOnDt = new Date(createdOn.$2_2.$2T_2);

您可以这样获得日期:

var createdOnDt = Xrm.Page.getAttribute("createdon").getValue();

根据我对Dynamics CRM DOM的理解,所有JavaScript都位于单独的空白iframe中。

表单元素位于另一个空的iframe中。

请注意,它们都在同一个窗口中,因此请更改以下行:

var div = $('#HeaderTilesWrapperLayoutElement');

对此:

var div = $('#HeaderTilesWrapperLayoutElement', window.parent.document);

您有两个选择,首先可以打开“旧版表单呈现” 或者打开旧式呈现,或者必须重构代码并习惯于受支持的方法链接到文档

但我在想,您不能使用Xrm.Page在CSS中更改

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM