9

我目前正在使用InvalidPluginExecutionException将消息发送给用户,但事实证明该消息是英文的,"Business Process Error"超出此错误框会出现 button "download log file"。这不是错误,因为用户正在尝试复制记录,如代码中所示。有没有其他方法无需使用InvalidPluginExecutionException来显示警报?

QueryExpression query1 = new QueryExpression();
query1.ColumnSet = new ColumnSet(true);
query1.EntityName = "new_appraisers";

EntityCollection ec = service.RetrieveMultiple(query1);

if (ec.Entities.Count <= 0)
{
    log.Tb_Log_Create("Appraiser created");
}
else
{
    foreach (Entity app in ec.Entities)
    {
        if (app["fcg_appraiser"].ToString() == name)
        {
            log.Tb_Log_Create("appraiser allready exist");

            throw new InvalidPluginExecutionException("The name allready exists");
        }

        if (app["new_login"].ToString() == login)
        {
            log.Tb_Log_Create("appraiser allready exist");

            throw new InvalidPluginExecutionException("The login allready exists.");
        }
    } 
}
4

2 回答 2

8

从插件向用户显示消息框的唯一方法是使用验证阶段的异常。但是,您可以使用 javascript,对表单的 On_Save 事件执行简单的 OData 查询,并显示一个包含您想要的任何信息的警报框,然后取消表单的保存。

这将允许您显示任何您想要的自定义消息,并防止插件触发和显示下载文件对话框。

于 2013-05-16T17:26:14.980 回答
1

我可能有点晚了,但是,在更新的 CRM 版本中,有几种可能性可以实现您想要的。更好的蜜蜂:

  1. 商业规则
  2. 使用 JS 进行验证并使用通知用户

我希望微软不会读到这个,但是......

您还可以使用同步插件并对弹出的业务流程错误对话框感到满意。我刚刚发现这个对话框在某种程度上是可以破解的。只需在 Exeptions 消息中返回 HTML,如下所示:

throw new InvalidPluginExecutionException(
@"<img height='16px' src='http://emojione.com/wp-content/uploads/assets/emojis/1f644.svg'> <strong>Oh snap!</strong>

It seems the record can not be saved in its current state.    

");

这导致了某事。像这样:

在此处输入图像描述

于 2017-02-03T12:47:58.160 回答