我对Dynamics crm 2015在线有要求:
到目前为止我尝试了什么! 我编写了一个JavaScript,其中我尝试在子网格上捕获'+'按钮的事件,在'gridname_addImageButton'id上使用'addEventListener',但事件未被捕获。这对于正常的Web开发来说是非常基本的东西,但不会发生在动态crm上。
更新 这是网格上出现的“+”按钮的HTML。
<a action="tec|ManyToMany|SubGridStandard|Mscrm.AddExistingRecordFromSubGridAssociated" tabindex="1340"
title="Add record." class="ms-crm-ImageStrip-addButton" style="display: block; cursor: pointer;"
onclick="return false;" id="tec_addImageButton" href="#">
<img class="ms-crm-add-button-icon" title="Add Experlogix Model record." alt="Add record."
id="Tec_addImageButtonImage" src="/_imgs/imagestrips/transparent_spacer.gif?ver=-893257913" />
</a>
这是我试过的javascript:
var elem = document.getElementById('tec_addImageButton');
elem.addEventListener('click',myFunc(),false);
我错过了什么? 问候, 莫米
答案 0 :(得分:1)
CRM表单不是“正常的Web开发”,因为该产品不支持直接的DOM操作。允许的唯一操作是使用CRM的Xrm.Page对象完成的操作。 SDK中记录了使用Xrm.Page的一般方法:https://msdn.microsoft.com/en-us/library/gg328261.aspx。
具体来说,您期待add a custom filter to a lookup,可以使用以下代码完成:
Admin/System/User/API
其中Xrm.Page.getControl(arg).addCustomFilter(filter, entityLogicaName)
是一个带有有效FetchXML过滤器的字符串,即:
filter
您可以在OnLoad事件中调用addCustomFilter,也可以使用PreSearch event handler添加过滤器:
<filter type="and">
<condition attribute="new_somefieldname" operator="eq" value="somevalue" />
</filter>
对于这个完全实现的示例,请归功于http://missdynamicscrm.blogspot.com/2014/08/crm-2013-using-addcustomfilter-to-get-filtered-lookup-field-based-on-linked-entity.html。
Xrm.Page.getControl(arg).addPreSearch(handler)
答案 1 :(得分:0)
确保事件附加到锚点,并在添加事件侦听器时添加不带括号()的函数,如下例所示。
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title></title>
<script type="text/javascript">
window.onload = function () {
document.getElementById('tec_addImageButton').addEventListener('click', myFunc, false)
}
function myFunc() {
alert("testing");
}
</script>
</head>
<body>
<a id="tec_addImageButton" href="#">test button</a>
</body>
</html>
答案 2 :(得分:0)
if (typeof (myObj) == "undefined") {
myObj = {};
}
(function () {
myObj.init = function () {
Xrm.Page.ui.controls.get('id_iframe').getObject().onload= function() {
var el = Xrm.Page.ui.controls.get('id_iframe').getObject().contentWindow.document.getElementById('myLabel');
addEvent(el, 'click', function () { alert('Evento'); });
};
}
function addEvent(element, evnt, funct) {
if (element.attachEvent)
return element.attachEvent('on' + evnt, funct);
else
return element.addEventListener(evnt, funct, false);
}
})();
<HTML>
<BODY onload="SetupEvents()">
<label id="myLabel" >Click me</label>
</HTML>