当子网格获得焦点时,JavaScript如何执行?
我有一个子网格,显示与帐户关联的所有案例
当子网格获得焦点时,我想禁用表单上的某些字段
功能区按钮的RibbonDiffXML操作:
<Actions>
<JavaScriptFunction Library="$webresource:mda_convertemailtocaselib" FunctionName="ConvertEmailToCaseLib.addToCase">
<CrmParameter Value="SelectedControlSelectedItemIds" />
</JavaScriptFunction>
</Actions>
这会将子网格选择项目传递给功能区按钮,但我希望在按下功能区按钮之前执行JavaScript。
答案 0 :(得分:1)
我没有尝试过其中任何一种,但希望其中一种适合你。
虽然它是子网格,但表单上仍然有一个控件。遗憾的是,没有“支持”的方式来了解控件何时获得焦点,因为没有任何通过CRM JS API公开的OnFocus / OnBlur方法。但是,您应该能够为该控件添加自己的JS事件处理程序,并通过API Xrm.Page.getControl("fieldname").setDisabled(true)
我不是百分百确定这种方式是否有效,但它会非常甜蜜。创建CustomRule EnableRule。在这个CustomRule中,你可以调用自己的JS。在此创建一个函数,您可以在其中禁用字段,然后返回true以使按钮启用。它看起来像这样:
function disableFieldsEnableRule() {
Xrm.Page.getControl().setDisabled(true);
...
...
return true; // so the button is enabled
}
我不确定这是否有效的唯一原因是因为我不确定每次点击子网格时是否都会检查启用规则,或者只是第一次(我认为应该每次都这样)。此外,我不确定您是否希望在单击关闭后重新启用这些字段。如果您这样做,您可能需要使用本机表单上的按钮或其他内容执行与此类似的操作。