0

Я пытаюсь отключить просмотр сборщика на счет поиска в 2016 годуОтключить просмотр выбора DIV не доступен в MS CRM

код работает отлично, я имею в виду я не получаю ошибку, но код не смог найти конкретный DIV «parentaccountid».

Где я могу видеть его в элементах: enter image description here

Но это возвращает {NULL}, когда код пытается получить элементы DIV - document.getElementById («parentaccountid»);

enter image description here

Мой код работает при загрузке страницы возможностей.

enter image description here Даже на этом этапе я могу увидеть конкретный DIV element- ID: parentaccountid enter image description here

Где, как я все еще получаю {NULL} значение:

enter image description here enter image description here

Где, как в 2013 году я видел, как он работает очень хорошо. Извините, у меня нет данных для обмена здесь, но он отлично работает.

Вот код ниже:

function DisablePick() 
 
{ 
 
\t VULoader(); 
 
\t 
 
\t //call this function from OnLoad handler 
 
\t function VULoader(){ 
 
\t \t var myLookup1; 
 
       alert("Hello..I am Here"); 
 
\t  var fetch = "<fetch mapping='logical'>" 
 
      +"<entity name='account'>"    
 
      +"<attribute name='name'/>"     
 
      +"<filter type='and'>" 
 
      +"<condition attribute='name' operator='eq' value='Blue Yonder Airlines (sample)' />" 
 
      +"</filter>" 
 
     +"</link-entity>" 
 
    +"</entity>" 
 
+"</fetch>"; 
 
\t \t 
 
\t \t myLookup1 = new XrmLookupField("parentaccountid"); 
 
\t \t myLookup1.AddLockedView(
 
\t \t \t //sViewId 
 
\t \t \t myLookup1.NewGuid() , 
 
\t \t \t //sEntityName 
 
\t \t \t "account", 
 
\t \t \t //sViewDisplayName 
 
\t \t \t "My Locked Custom View", 
 
\t \t \t //sFilterXml 
 
\t \t \t fetch, 
 
\t \t \t //sFilterLayout 
 
\t \t \t layout(1, "name", "accountid") 
 
\t \t \t \t .column("name", 200) 
 
\t \t \t .toString() 
 
\t \t); 
 
\t } 
 

 
\t function XrmLookupField(sId) { 
 
\t \t var xlf = this; 
 
\t \t //control instance 
 
\t \t xlf.Ctl = Xrm.Page.getControl(sId); 
 
\t \t //dom instance 
 
\t \t xlf.Dom = document.getElementById(sId); 
 
\t \t //jquery instance 
 
\t \t xlf.$ = $(xlf.Dom); 
 
\t 
 
\t \t /* 2013 addition --- Inline Control instance --- */ 
 
\t \t xlf.$i = $("#" + sId + "_i"); 
 
\t 
 
\t \t //use that to disable the view picker 
 
\t \t xlf.DisableViewPicker = function() { 
 
\t \t \t /* 2013 addition --- The attribute capitalization changed */ 
 
\t \t \t xlf.SetParameter("disableviewpicker", "1"); 
 
\t \t } 
 
\t \t //use that to enable the view picker 
 
\t \t xlf.EnableViewPicker = function() { 
 
\t \t \t /* 2013 addition --- The attribute capitalization changed */ 
 
\t \t \t xlf.SetParameter("disableviewpicker", "0"); 
 
\t \t } 
 
\t \t 
 
\t \t //set undocumented attributes 
 
\t \t \t xlf.SetParameter = function (sName, vValue) { 
 
\t \t \t xlf.$.attr(sName, vValue); 
 
\t 
 
\t \t \t /* 2013 addition --- Also change the inline contorl value */ 
 
\t \t \t xlf.$i.attr(sName, vValue); 
 
\t \t } 
 
\t \t 
 
\t \t //add locked view 
 
\t \t xlf.AddLockedView = function (sViewId, sEntityName, sViewDisplayName, sFilterXml, sFilterLayout) { 
 
\t \t \t //first enable the view picker 
 
\t \t \t xlf.EnableViewPicker(); 
 
\t \t \t //add the custom view (last parameter set the view as default) 
 
\t \t \t xlf.Ctl.addCustomView(sViewId, sEntityName, sViewDisplayName, sFilterXml, sFilterLayout, true); 
 
\t \t \t //lock the view picker 
 
\t \t \t xlf.DisableViewPicker(); 
 
\t \t } 
 
\t \t //create new guid 
 
\t \t xlf.NewGuid = function() { 
 
\t \t \t var d = new Date().getTime(); 
 
\t \t \t var guid = '{xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx}'.replace(/[xy]/g, function (c) { 
 
\t \t \t \t var r = (d + Math.random() * 16) % 16 | 0; 
 
\t \t \t \t d = Math.floor(d/16); 
 
\t \t \t \t return (c == 'x' ? r : (r & 0x7 | 0x8)).toString(16); 
 
\t \t \t }); 
 
\t \t \t return guid; 
 
\t \t } 
 
\t } 
 
}

Несколько точек говоря:

Я вызываю метод DisablePicker по нагрузке на странице возможностей. Да, я уже проверил, существует ли какой-либо дубликат идентификатора, но я не нашел его.

Я попытался запустить этот метод при загрузке поля Счета, но не ответил.

Если я изменил значение disableviewpicker свойства от 0 до 1 в самом DIV вручную из браузера после загрузки страницы &, откройте поиск, а затем он изменит значение.

Действительно, я не понимаю, почему он ведет себя подобным образом, мне просто нужно знать, где именно я ошибаюсь, или это ошибка продукта, но я не думаю, что это так. Как его очень основное поведение.

PS: Для моих друзей не MS CRM я не могу изменить DIV или что-либо кроме моего кода JavaScript.

ответ

1

Ваш код формы выполняется в кадре, который отделен от фактической формы CRM; он запускается на странице ClientApiWrapper.aspx. Поэтому для доступа к элементу формы, который вы хотите изменить из сценария формы, вы формируете код, который должен делать parent.document.getElementById вместо document.getElementById.

Когда вы используете инструменты разработчика вашего браузера, рамка по умолчанию, выполняемая консолью, также не является фреймом, который имеет ваши элементы формы, а также не является фреймом с кодом вашей формы. Самый простой способ выполнить с правильным фреймом - использовать функцию в ваших инструментах для переключения кадров.В Firefox, эта кнопка выглядит следующим образом:

enter image description here

Это проще всего установить рамку на ClientApiWrapper.aspx один, так как он обеспечивает доступ к обеим библиотекам, загруженных на форме, а также Client- CRM API.

+0

Да, я могу получить DIV с помощью parent.document, но у меня есть два вопроса: посмотрите, можете ли вы также помочь в этом? 1) Это происходит потому, что страница CRM 2013 загружается по-другому, чем CRM 2016? 2) Нужно ли мне при необходимости загружать фрейм в ClientApiWrapper.aspx во время загрузки, если да, то как или просто нужно использовать код Xrm.Page.context.client.getClient или есть другой способ сделать. Я нашел несколько блогов, но я этого не понял. Да, Большое спасибо за ваш вклад. – Deep

+0

1) Да, в какой-то момент структура страницы изменилась, я не помню, когда именно. 2) Код, который вы публикуете в CRM, не должен беспокоиться о переключении фреймов, он всегда может делать «parent.document.getElementById'. При использовании инструментов Dev вы должны будете заниматься переключением кадров. – Polshgiant