【问题标题】:Prevent firing of OnChange function after field is updated on server side防止在服务器端更新字段后触发 OnChange 函数
【发布时间】:2018-04-15 05:42:55
【问题描述】:

当我向字段注册 OnChange 函数时,如果该字段在服务器端的插件上更新(在 Dynamics Crm 2015 上),它将被触发

可以防止这种行为(以受支持的方式)吗?

示例代码:

1.客户端:

Xrm.Page.getAttribute("org_myfield").addOnChange(function () { alert("org_myfield was changed") });

2。服务器端:

internal void OnPreUpdateRequest(org_myentity target, org_myentity preImage)
{
    target.org_myfield = "some value";
}

3.结果(保存记录后插件运行完毕):

"org_myfield was changed"

要求的结果:不应触发警报。

【问题讨论】:

  • 等等,什么?这是不可能的 :) 实际上,您是如何实现这一目标的?
  • 以上正是我所做的。据我了解,这是MSDN 的预期行为:“当刷新表单时检索服务器上的数据更改以更新字段时,例如保存记录后,也会发生此事件 [OnChange]。”
  • 表单加载哦,是的,我想空转:)
  • 注意我不是在谈论 OnLoad 事件
  • 默认情况下,ExecutionContext 将作为 EventHandler 中的第一个参数发送。如果你能看到任何不同,请尝试.. 祝你好运

标签: javascript c# dynamics-crm dynamics-crm-2015


【解决方案1】:

我相信这就是您想要得到的:
1.当用户对该字段进行更改时,调用JavaScript on change函数;
2. 保存记录时,插件也可能改变字段的值;
3.如果字段值被插件改变,跳过JavaScript函数。

如果这是正确的,我会尝试这样:
从字段中删除onChange 事件,而不是检查表单的onSave 事件中的字段状态。
使用Xrm.Page.getAttribute("org_myfield").getIsDirty() 确定用户是否对该字段进行任何更改。它只检查客户端的更改,因此不会受到插件的影响。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多