#javascript #crm #microsoft-dynamics #quote
#javascript #crm #microsoft-dynamics #Цитата
Вопрос:
У меня есть продукт с предложением комплекта в CRM 2011, и я пытаюсь вызвать функцию, когда соответствующий вид продукта обновляется.
В инструментах отладки F12 я вижу, что идентификатор сетки ‘crmGrid_productassociation_association’:
Но следующий код js, похоже, не работает:
var grid = document.getElementById("crmGrid_productassociation_association").control;
if (grid != null)
{
alert("success");
}
И когда я запускаю этот код при загрузке страницы:
console.dir(Xrm.Page.ui.controls.get());
Элемент управления crmGrid_productassociation_association не отображается в списке элементов управления. Вместо этого отображаются только элементы управления для исходного продукта предложения. Кто-нибудь знает, как вызвать функцию js при обновлении связанного представления сетки?
Ответ №1:
Для тех из вас, кому интересно, я смог получить связанные сетки в CRM 2011 с помощью JS, вам нужна функция, которая выглядит следующим образом:
function reloadKitProducts() {
var iframe = document.getElementById('areaKitsFrame');
if (iframe == null || iframe.readyState != "complete") {
setTimeout(reloadKitProducts, 3000);
return;
}
var subgrid = iframe.contentWindow.document.getElementById('crmGrid_productassociation_association').control.add_onRefresh(getKitProductsOnLineItemChange);
}
Вам нужно получить идентификатор iframe, который содержит подсетку. Это основная строка здесь:
var subgrid = iframe.contentWindow.document.getElementById('crmGrid_productassociation_association').control.add_onRefresh(getKitProductsOnLineItemChange);
Он загружается только при нажатии на ссылку в панели навигации, и для загрузки все равно потребуется секунда или две, поэтому вам нужно реализовать рекурсивный тайм-аут.