Это проще, чем я думал, хотя, конечно, Microsoft ничего не собиралась делать. Следующее предназначено для формы Инцидент, поэтому вам, возможно, придется настроить индексы списка выбора для фактической используемой формы.
В коде OnLoad вашей формы поместите следующую функцию (часть window.
важна, чтобы функция не выходила из области действия, когда код OnLoad завершен):
window.setFormAssistantPicklist = function()
{
var plMain = document.getElementById("ContextSelect");
if ((plMain) && (1 == plMain.selectedIndex))
{
var plSub = document.getElementById("selObjects");
if (plSub)
{
plSub.selectedIndex = 1;
plSub.fireEvent("onchange");
}
else
{
setTimeout(setFormAssistantPicklist, 1000);
}
}
};
Это будет проверять, выбрано ли «Клиент» и загружена ли нижняя панель помощника по формам, «Клиент», и если это так, выберите «Контакт» во втором списке выбора и запустите событие OnChange.
Если второй список выбора не может быть найден, нижняя панель все еще загружается (я не уверен, есть ли способ перехватить событие OnReadyStateChange этого вызова загрузки, что, конечно, будет более элегантным), и мы проверим его снова секунду спустя.
Теперь нам нужно убедиться, что этот код вызывается при изменении выбора в верхнем списке выбора. Это также входит в ваш код OnLoad:
var pl = document.getElementById("ContextSelect");
if (pl)
{
pl.onchange = function ()
{
RelatedInformationPane.LoadContextData(); // this is the standard OnChange code of the lookup selection picklist
setFormAssistantPicklist();
}
}
Это приведет к загрузке нижней панели, после чего будут выполнены проверки в setFormAssistantPicklist()
и, возможно, соответствующий список выбора.