我目前正在使用InvalidPluginExecutionException
向用户发送消息,但事实证明该消息为英文"Business Process Error"
,超出该消息时,按钮"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.");
}
}
}
答案 0 :(得分:8)
从插件向用户显示消息框的唯一方法是使用验证阶段的异常。您可以使用javascript,然后在表单的On_Save事件上执行简单的OData查询,并显示包含您想要的任何信息的警告框,并取消保存表单。
这将允许您显示您想要的任何自定义消息,并保持插件不会触发并显示下载文件对话框。
答案 1 :(得分:1)
我可能会迟到一点,然而,在最近的CRM版本中,有几种可能性可以达到你想要的效果。更好的是:
您还可以使用同步插件,并对业务流程错误对话框弹出感到满意。我刚刚发现这个Dialog在某种程度上是可以破解的。只需在Exeptions Message中返回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.
");
导致某事。像这样: