2016-01-08 63 views
0

我對動態CRM 2015年在線要求:自定義事件處理程序 - Dynamics CRM Online中

  1. 我有一個自定義實體的查找和子網格。
  2. 當在「搜索」按鈕,它示出了搜索框用戶點擊,我想要搜索中預先填充與查找字段的值,所以要保存從複製/粘貼用戶或鍵入查找值進搜索框。

我到目前爲止試過的東西! 我寫了一個JavaScript,其中我嘗試使用'gridname_addImageButton'id上的'addEventListener'來捕獲子網格上的'+'按鈕事件,但事件未被捕獲。這對於正常的web開發來說是非常基本的東西,但是不會發生在動態crm上。

What I am trying to achieve!

UPDATE 這是對電網出現 「+」 按鈕的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); 

我缺少什麼? Regards, Momi

+0

也許用於獲取加號按鈕的CSS選擇器是錯誤的,因此點擊事件沒有正確連接。如果沒有看到DOM或代碼,可以說很多。 – blessenm

+2

您試圖實現的是不支持的定製,可能會在未來版本的產品中打破。而且,如果不分享一些代碼,很難分辨出什麼問題。 –

+0

嘿,我已經更新了我的問題,並添加了我使用的html和js代碼。 – Mahmood

回答

1

由於產品不支持直接DOM操作,CRM形式並不是「正常的網絡開發」。唯一允許的操作是使用CRM的Xrm.Page對象完成的操作。使用Xrm.Page的一般方法在SDK中有記錄:https://msdn.microsoft.com/en-us/library/gg328261.aspx

具體而言,您正在尋找add a custom filter to a lookup,可以用代碼來完成:

Xrm.Page.getControl(arg).addCustomFilter(filter, entityLogicaName)

哪裏filter是一個有效的FetchXML過濾字符串,即:

<filter type="and"> 
<condition attribute="new_somefieldname" operator="eq" value="somevalue" /> 
</filter> 

你可以調用addCustomFilter在onload事件,或者你可以使用一個PreSearch event handler添加您的過濾器:

Xrm.Page.getControl(arg).addPreSearch(handler)

感謝http://missdynamicscrm.blogspot.com/2014/08/crm-2013-using-addcustomfilter-to-get-filtered-lookup-field-based-on-linked-entity.html這個全面實施例子。

function onLoad() 
{ 
    addEventHandler(); 
} 

function addEventHandler() { 
    // add the event handler for PreSearch Event 
    Xrm.Page.getControl("parentcontactid").addPreSearch(addFilter); 
} 

function addFilter() { 
    //find contact contains this @example.com 
    var email = "%@example.com%"; 

    //create a filter xml 
    var filter = "<filter type='and'>" + 
       "<condition attribute='emailaddress1' operator='like' value='" + email + "'/>" + 
       "</filter>"; 

    //add filter 
    Xrm.Page.getControl("parentcontactid").addCustomFilter(filter); 
} 
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> 
0
  • 你必須把HTML腳本解決方案中的網絡資源。
  • 在您的表單中插入HTML
  • 您必須將js腳本作爲Web資源放入您的解決方案中。
  • 您必須對事件庫表的框架:網絡資源
  • 您必須對事件的事件處理程序的框架 - >表 - >的onload地址:myObj.init()

if (typeof (myObj) == "undefined") { 
 
    myObj = {}; 
 
} 
 
(function() { 
 

 
    myObj.init = function() { 
 
\t \t Xrm.Page.ui.controls.get('id_iframe').getObject().onload= function() { 
 
\t \t \t var el = Xrm.Page.ui.controls.get('id_iframe').getObject().contentWindow.document.getElementById('myLabel'); 
 
\t   addEvent(el, 'click', function() { alert('Evento'); }); 
 
\t \t }; 
 
    } 
 

 
    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>


相關問題