我在表单助手(MS CRM 4.0)上使用javascript进行一些简单的自定义时遇到了一些麻烦。 我想要实现的是当我打开表单助手时,在查找中选择的内容与当前(默认)不同。
例如,如下图所示,当我选择客户时,我希望我的默认选择是“联系”,而不是帐户当前和默认选择。
到目前为止主要的查找(表格助手)我设法改变了这样的焦点:
crmForm.all.customer.SetFocus();
但不知怎的,我无法找到另一个查找的id。 我试图从html中挖掘它,但我尝试的任何东西似乎都没有用。
我非常感谢任何帮助,文章和文档。
谢谢!
答案 0 :(得分:2)
这比我想象的要容易,但当然微软并没有打算这样做。以下是“事件”表单,因此您可能需要调整实际使用的表单的选项列表索引。
在表单的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事件,这当然会更优雅)并且我们会在一秒钟之后再次检查它。 / p>
现在我们需要确保在上面的选项列表中的选择被更改时调用此代码。这也适用于您的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()
中的检查,并可能相应地设置选项列表。