|
23.09.2013, 11:30 | #1 |
Участник
|
SetParameter не работает?
Добрый день, коллеги!
Есть задача: фильтровать записи в SubGrid в зависимости от значения поля с типом набор параметров. Проблема на финальной стадии, когда я пытаюсь установить setParameter мне выдает что объект не поддерживает свойство или метод или не удалось получить свойство "SetParameter" ссылки, значение которой не определено или является NULL. Вот сам код: Цитата:
function filterSubGrid() { //var accountsGrid = document.getElementById("new_dogovorGrid"); //grid to filter var Casko = 100000001; var Osago = 100000000; var reguestGrid =Xrm.Page.ui.controls.get('new_dogovorGrid')._control; debugger; if (reguestGrid == null) { //make sure the grid has loaded setTimeout(function () { updateSubGrid(); }, 2000); //if the grid hasn’t loaded run this again when it has return; } var accountValue = Xrm.Page.getAttribute("new_account").getValue(); //field to filter by var ProductValue = Xrm.Page.getAttribute("new_insurance_product").getValue(); //field to filter by var accountId = "00000000-0000-0000-0000-000000000000"; //if filter field is null display nothing if (accountValue != null && (ProductValue == Casko || ProductValue == Osago)) { var accountId = accountValue[0].id; } //fetch xml code which will retrieve all the accounts related to the contact var fetchXml = "<fetch version='1.0' output-format='xml-platform' mapping='logical' distinct='false'>" + " <entity name='new_request'>" + " <attribute name='new_requestid' />" + " <attribute name='new_insurance_product' />" + " <attribute name='new_insuransepayment' />" + " <attribute name='new_total_limit' />" + " <attribute name='new_client_account' />" + " <order attribute='new_insurance_product' descending='false' />" + " <filter type='and'>" + " <condition attribute='new_client_account' operator='eq' uitype='account' value='" + accountId + "' />" + " <condition attribute='new_insurance_product' operator='eq' value='" + ProductValue + "'/>" + " <condition attribute='new_stage' operator='eq' value='100000006' />" + " <condition attribute='new_result' operator='eq' value='1' /> " + " </filter>" + " </entity>" + "</fetch>"; если пишу так - то объект не поддерживает свойство или метод reguestGrid.setParameter("fetchXml", fetchXml); - reguestGrid.refresh(); //refresh the sub grid using the new fetch xml если пишу так - то не удалось получить свойство "SetParameter" ссылки, значение которой не определено или является NULL. // reguestGrid.control.SetParameter("fetchXml", fetchXml); //set the fetch xml to the sub grid // reguestGrid.control.refresh(); //refresh the sub grid using the new fetch xml } |
|
23.09.2013, 17:43 | #2 |
Участник
|
поле UR12 они переименовали метод с SetParameter на setParameter или на оборот точно не помню.
Но нужно писать точно reguestGrid.control.setParameter А для поддержки нескольких ролапов нужно писать так: Код: if (typeof reguestGrid.control.setParameter != "undefined"){ reguestGrid.control.setParameter("fetchXml", fetchXml); } if (typeof reguestGrid.control.SetParameter != "undefined"){ reguestGrid.control.SetParameter("fetchXml", fetchXml); } |
|
23.09.2013, 21:22 | #3 |
Участник
|
Этот код не работает, ошибка осталась. Я сети я находил подобный код.
Переименовалась с setParameter на setParameter. Может еще кто-то подкинет идеи? Цитата:
Сообщение от spectr
поле UR12 они переименовали метод с сна setParameter или на оборот точно не помню.
Но нужно писать точно reguestGrid.control.setParameter А для поддержки нескольких ролапов нужно писать так: Код: if (typeof reguestGrid.control.setParameter != "undefined"){ reguestGrid.control.setParameter("fetchXml", fetchXml); } if (typeof reguestGrid.control.SetParameter != "undefined"){ reguestGrid.control.SetParameter("fetchXml", fetchXml); } |
|
23.09.2013, 22:21 | #4 |
Участник
|
У меня вот такой код работает на 12,13 ролапе
Код: var Interval = null; function OnLoadForm() { var fetchXml = 'YOUR FETCH'; ChangeFetch("YOUR SUBGRID NAME", fetchXml); } function ChangeFetch(sGridName, fetchXML) { Init(); function Init() { Interval = setInterval(function () { var grid = document.getElementById(sGridName); if (grid != null && typeof grid.control != 'undefined' && grid.control != null) { clearInterval(Interval); try { grid.control.SetParameter("fetchXml", fetchXML); grid.control.refresh(); } catch (e) { } } }, 300); } } Он первый на форме?
__________________
Читайте SDK!!! |
|
24.09.2013, 11:23 | #5 |
Участник
|
Цитата:
Этот код не работает, ошибка осталась. Я сети я находил подобный код.
Цитата:
var reguestGrid =Xrm.Page.ui.controls.get('new_dogovorGrid')._control;
Код: var reguestGrid = document.getElementById("new_dogovorGrid"); .... if (typeof reguestGrid.control.setParameter != "undefined"){ reguestGrid.control.setParameter("fetchXml", fetchXml); } if (typeof reguestGrid.control.SetParameter != "undefined"){ reguestGrid.control.SetParameter("fetchXml", fetchXml); } Вместо: Цитата:
if (reguestGrid == null) { //make sure the grid has loaded
setTimeout(function () { updateSubGrid(); }, 2000); //if the grid hasn’t loaded run this again when it has return; } Код: if (reguestGrid != null) { if (reguestGrid .readyState != "complete") { setTimeout(updateSubGrid, 1000); return; } } else { setTimeout(updateSubGrid, 1000); return; } Код: if (grid != null && typeof grid.control != 'undefined' && grid.control != null) Последний раз редактировалось spectr; 24.09.2013 в 11:30. |
|
24.09.2013, 18:35 | #6 |
Участник
|
Я код переписал, мне не ясно почему если пишу так, то переменная содержит значение reguestGrid {...} Object, (FormUIControl)
Цитата:
var reguestGrid =Xrm.Page.ui.controls.get('new_dogovorGrid')._control;
А переменная reguestGrid = undefined, когда пишу таким образом document.getElementById("new_dogovorGrid") = [Object, HTMLDivElement] Цитата:
var reguestGrid = document.getElementById("new_dogovorGrid")
Цитата:
function filterSubGrid() { var Casko = 100000001; var Osago = 100000000; var reguestGrid =Xrm.Page.ui.controls.get('new_dogovorGrid')._control; var reguestGrid1 = document.getElementById("new_dogovorGrid"); debugger; if (reguestGrid != null) { if (reguestGrid .readyState != "complete") { setTimeout(filterSubGrid, 1000); return; } } else { setTimeout(filterSubGrid, 1000); return; } var accountValue = Xrm.Page.getAttribute("new_account").getValue(); //field to filter by var ProductValue = Xrm.Page.getAttribute("new_insurance_product").getValue(); //field to filter by var accountId = "00000000-0000-0000-0000-000000000000"; //if filter field is null display nothing if (accountValue != null && (ProductValue == Casko || ProductValue == Osago)) { var accountId = accountValue[0].id; } //fetch xml code which will retrieve all the accounts related to the contact var fetchXml = "<fetch version='1.0' output-format='xml-platform' mapping='logical' distinct='false'>" + " <entity name='new_request'>" + " <attribute name='new_requestid' />" + " <attribute name='new_insurance_product' />" + " <attribute name='new_insuransepayment' />" + " <attribute name='new_total_limit' />" + " <attribute name='new_client_account' />" + " <order attribute='new_insurance_product' descending='false' />" + " <filter type='and'>" + " <condition attribute='new_client_account' operator='eq' uitype='account' value='" + accountId + "' />" + " <condition attribute='new_insurance_product' operator='eq' value='" + ProductValue + "'/>" + " <condition attribute='new_stage' operator='eq' value='100000006' />" + " <condition attribute='new_result' operator='eq' value='1' /> " + " </filter>" + " </entity>" + "</fetch>"; if (typeof reguestGrid.control.setParameter != "undefined"){ reguestGrid.control.setParameter("fetchXml", fetchXml); } if (typeof reguestGrid.control.SetParameter != "undefined"){ reguestGrid.control.SetParameter("fetchXml", fetchXml); } } |
|
|
|