1

当子网格获得焦点时,JavaScript 如何执行?

我有一个子网格,显示与帐户关联的所有案例。
当子网格获得焦点时,我想禁用表单上的某些字段。

功能区按钮的 RibbonDiffXML 操作:

        <Actions>
            <JavaScriptFunction Library="$webresource:mda_convertemailtocaselib" FunctionName="ConvertEmailToCaseLib.addToCase">
              <CrmParameter Value="SelectedControlSelectedItemIds" />
            </JavaScriptFunction>
        </Actions>

这会将子网格选择项传递给功能区按钮,但我希​​望 JavaScript 在按下功能区按钮之前执行。

4

1 回答 1

1

我还没有尝试过其中任何一个,但希望其中一个对你有用。

  1. 虽然是子网格,但窗体上还是有一个控件。不幸的是,由于没有通过 CRM JS API 公开的任何 OnFocus/OnBlur 方法,因此没有“支持”的方式来了解控件何时获得焦点。但是,您应该能够为该控件添加自己的 JS 事件处理程序并通过 API 禁用字段Xrm.Page.getControl("fieldname").setDisabled(true)

  2. 我不是 100% 确定这种方式是否可行,但它会非常甜蜜。创建一个 CustomRule EnableRule。在这个 CustomRule 中,您调用自己的 JS。在此创建一个函数,您可以在其中禁用字段,然后返回 true 以启用按钮。它看起来像这样:

    function disableFieldsEnableRule() { 
        Xrm.Page.getControl().setDisabled(true);
        ...
        ...
        return true; // so the button is enabled
    }

我不确定这是否可行的唯一原因是因为我不确定每次单击子网格时是否检查启用规则或只是第一次(我认为应该每次都检查)。此外,我不确定您是否希望在单击关闭后重新启用这些字段。如果你这样做了,你可能需要用原生表单上的按钮或其他东西来做类似的事情。

于 2013-04-27T16:01:22.627 回答