Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/google-app-engine/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Dynamics crm 使用JavaScript修改CRM 4.0中的主要活动网格视图_Dynamics Crm_Dynamics Crm 4 - Fatal编程技术网

Dynamics crm 使用JavaScript修改CRM 4.0中的主要活动网格视图

Dynamics crm 使用JavaScript修改CRM 4.0中的主要活动网格视图,dynamics-crm,dynamics-crm-4,Dynamics Crm,Dynamics Crm 4,我的任务是根据crm 4.0中每一行的自定义状态,更改网格中每一行的主活动视图页面(工作场所,我的工作->活动)上的信封图标。我需要使用JavaScript来完成它。有人知道有没有办法做到这一点吗?JavaScript代码应该放在哪里?我假设我需要截取网格onLoad事件,遍历网格,检查条件并翻转图标的url。但我想不出如何参与这件事 非常感谢 我得到了一些非常有用的建议,以下是我迄今为止得到的建议。 1.我添加了SiteMap以加载自定义页面,而不是默认页面(/workplace/home\u

我的任务是根据crm 4.0中每一行的自定义状态,更改网格中每一行的主活动视图页面(工作场所,我的工作->活动)上的信封图标。我需要使用JavaScript来完成它。有人知道有没有办法做到这一点吗?JavaScript代码应该放在哪里?我假设我需要截取网格onLoad事件,遍历网格,检查条件并翻转图标的url。但我想不出如何参与这件事

非常感谢

我得到了一些非常有用的建议,以下是我迄今为止得到的建议。
1.我添加了SiteMap以加载自定义页面,而不是默认页面(/workplace/home\u activities.aspx)
2.这是自定义页面的代码,在html中放置onreadystatechange是运行此函数的唯一方法。不知道为什么

HTML> HEAD> TITLE> script language="javascript" type="text/javascript"> function Run() { var objIframe = getIframe(); if(objIframe.readyState == "complete") { var docFrame = objIframe.contentWindow.document; var grid = docFrame.getElementById("crmGrid"); var allRecords = grid.InnerGrid.AllRecords; for(var i=0; i
function getIframe()
{
   return document.getElementById("wraperActivitiesFrame");
}
HTML>
头>
标题>
script language=“javascript”type=“text/javascript”>
函数运行()
{
var objIframe=getIframe();
if(objIframe.readyState==“完成”)
{
var docFrame=objIframe.contentWindow.document;
var grid=docFrame.getElementById(“crmGrid”);
var allRecords=grid.InnerGrid.allRecords;
对于(var i=0;i
函数getIframe()
{
returndocument.getElementById(“wraperActivitiesFrame”);
}
/脚本>
/头>
正文>
iframe id=“wraperactivesframe”src=“/workplace/home\u activities.aspx”WIDTH=“100%”HEIGHT=“100%”onreadystatechange=“Run()”>
/HTML>

我现在遇到的问题是,当我尝试分页网格时,该函数不会再次运行。我有2页活动;当页面第一次加载时,我有我的警报框,但当我单击“第2页”箭头时,什么都没有发生。为什么???我做错了什么?

你可以连接到该事件。你创建了一个“包装器”您在CRM中加载的HTML页面,而不是通过Sitemap加载的默认活动网格。此包装包含一个完整大小的IFrame,您可以在其中加载实际网格,并且在IFrame的onreadystatechange处理程序(对于
readyState==4
)中,您可以遍历网格的DOM(jQuery可能会使这更容易一些,但我自己很少使用jQuery)并执行您需要执行的任何更改(这意味着JavaScript将进入包装器HTML页面)。如果您通过
setInterval
调用此函数,并在其周围放置一个try catch,这甚至可以防止网格刷新和浏览页面。

谢谢您的回答!您做过类似的操作吗?或者这是一个概念性的事情吗?我刚刚查看了实际的.aspx页面,该页面呈现活动网格。在这个页面中有很多内容好了。为了创建那个“包装器”页面,我假设我必须复制原始页面所做的一切,并添加一些自定义代码?我们在各种情况下都做过类似的事情(我确信这可以以刷新/分页安全的方式完成)。您不需要复制任何内容。包装页实际上只是一个HTML页面,只有一个IFrame和一些JavaScript;这只是一个保存JavaScript逻辑的“不可见”层,因为您无法将JavaScript添加到CRM主窗口(更不用说Outlook客户端了)或者网格。在IFrame中,您可以像CRM一样加载原始的.aspx,当它呈现时,进入其DOM并进行更改。您不需要查看“原始”CRM安装文件夹中的.aspx文件,因为CRM窗口中呈现的网格可能根本不在其中。您只需使用IE Developer工具之类的工具查看CRM中网格的DOM结构,就可以了解如何遍历网格以及要操作哪些元素。非常感谢您的帮助!很抱歉打扰您,但可以看看我的代码,告诉我我做的是对还是错?函数Run(){document.frames(“wraperactivesframe”).document.onreadystatechange=wraperactivesframe\u onreadystatechange;}函数wraperactivesframe\u onreadystatechange(){alert(“Yahoo!”;}我没有在代码中进行任何遍历。我只是尝试挂接到事件中,看看函数是否运行。我更改了customazation区域中的站点地图,以便调用上面的页面,而不是默认的home_activities.aspx。我似乎没有太多成功,也不确定我正在做什么荣,谢谢你!!