CRM 4.0自定义表单助手

时间:2010-11-23 13:25:19

标签: dynamics-crm dynamics-crm-4

我在表单助手(MS CRM 4.0)上使用javascript进行一些简单的自定义时遇到了一些麻烦。 我想要实现的是当我打开表单助手时,在查找中选择的内容与当前(默认)不同。

例如,如下图所示,当我选择客户时,我希望我的默认选择是“联系”,而不是帐户当前和默认选择。

alt text

到目前为止主要的查找(表格助手)我设法改变了这样的焦点:

crmForm.all.customer.SetFocus();

但不知怎的,我无法找到另一个查找的id。 我试图从html中挖掘它,但我尝试的任何东西似乎都没有用。

我非常感谢任何帮助,文章和文档。

谢谢!

1 个答案:

答案 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()中的检查,并可能相应地设置选项列表。