javascript - 在设定时间禁用/启用色带

标签 javascript plugins dynamics-crm-2011 ribbon

我有一个在创建时触发的联系人实体插件。然后它调用 WCF 服务并在后台 (MSSQL) 中创建一个新记录。同一实体有另一个插件,该插件在记录更新时触发。

我遇到的问题是,如果我创建一个新记录并在一分钟内更改详细信息并尝试保存它,更新插件就会失败。这是因为 Create 插件仍在运行。 (而且我正在尝试更新的记录在后台数据库中仍然不存在)

当创建插件的状态不是完成或失败时,有没有办法禁用功能区中的“保存”或“保存并关闭”按钮?或者至少禁用它 120 秒,这样它就不会立即被点击?

内部部署的 CRM 2011 RU18。 (所有最终用户都被限制使用IE所以我可以使用JS)

提前谢谢你,

最佳答案

我的解决方案是让一些 JavaScript 在表单上等待并且在您的插件传递“完成”消息之前不允许它保存,在这种情况下可以保存表单。在您的插件代码接近尾声时,我会让它更新 JavaScript 会查看的表单上的值,如果未填充此字段,则不允许保存表单。

JavaScript 是简单的部分,使用 onSave 方法并确保将执行对象作为第一个参数传递,并假设您为插件创建字段 a bool

function preventSave(exobj)
{
  var pluginFinished = Xrm.Page.getAttribute("pluginFinished");

  if (pluginFinished.getValue() == false || pluginFinished.getValue() == null)
  {
    exobj.getEventArgs().preventDefault();
  }
}

如果没有值或为空,JavaScript 将不允许保存表单。您可能希望在 preventDefault(阻止保存)之后提供一条消息,以提醒用户未发生保存。

希望对你有帮助

关于javascript - 在设定时间禁用/启用色带,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29630192/

相关文章:

android - Flutter 原生插件 : Example with eventlisteners

objective-c - 是否可以为 OSX Preview 编写插件?

javascript - 如何垂直对齐两个div中的元素?

javascript - 如何使 ng-repeat 与返回新对象的函数一起工作?

javascript - 如何使用 Kotlin 生成 javascript 函数 `constructor` ?

javascript - CRM 2011 - 使用 JavaScript 保存时进行重复检测

dynamics-crm - 每次更改行时,网格上的 CRM 2011 功能区启用规则不会触发

javascript - 动态聚焦模糊内容可编辑

plugins - Jenkins Gradle 插件 - 将参数作为 -P 而不是 -D 传递

c# - 在 CRM Dynamics 中使用属性的别名时如何从 fetchedXML 访问值?