我们试图通过应用表单验证来强制notes (with file upload)字段。
我们尝试使用的选项是client side javascripting。到目前为止,这么好......
问题是在“事件处理程序”选项卡下:
Notes
实体未在控制项目中列出
因此很明显,Notes
实体没有客户端事件。
如何在Notes
实体字段上应用必需的字段验证?
答案 0 :(得分:2)
无法在父记录中执行您要执行的验证。它必须在注释表单中进行验证,但我们已经讨论过注释实体不能完全自定义,我们还必须牢记社交窗格及其特殊性。
我认为验证这一点的最佳方法是在注释的创建事件(预验证阶段)中创建一个插件,以检查正在创建的注释是否已完成所需的字段。
快速示例(我尚未测试过):
public class ValidateNote : IPlugin
{
public void Execute(IServiceProvider serviceProvider)
{
IPluginExecutionContext context = (IPluginExecutionContext)serviceProvider.GetService(typeof(IPluginExecutionContext));
IOrganizationServiceFactory serviceFactory = (IOrganizationServiceFactory)serviceProvider.GetService(typeof(IOrganizationServiceFactory));
IOrganizationService service = serviceFactory.CreateOrganizationService(context.UserId);
if (context.InputParameters.Contains("Target") && context.InputParameters["Target"] is Entity) {
Entity note = (Entity)context.InputParameters["Target"];
// you can also use "subject" instead of "description"
if (string.IsNullOrEmpty(note.GetAttributeValue<string>("description")) || string.IsNullOrEmpty(note.GetAttributeValue<string>("filename")))
{
throw new InvalidPluginExecutionException("Please add an attachment and description");
}
}
}
}
答案 1 :(得分:1)
Notes关系是1:N关系。默认情况下,您可以关联至少零注释。
要应用Javascript验证,您需要有效的查找字段。由于您无法为备注创建字段,因此您可以使用插件来强制执行此验证。
插件逻辑:
var pluginContext = localContext.PluginExecutionContext;
if (!pluginContext.InputParameters.Contains("Target") ||
!(pluginContext.InputParameters["Target"] is Entity)) return;
var target = pluginContext["Target"] as Entity;
var annotationQuery = new QueryExpression
{
EntityName = "annotation",
ColumnSet = new ColumnSet(true),
Criteria =
{
Conditions =
{
new ConditionExpression("objectid", ConditionOperator.Equal, target.Id)
}
}
};
var response = localContext.OrganizationService.RetrieveMultiple(annotationQuery);
if (!response.Entities.Any())
throw new InvalidPluginExecutionException("No Notes were found for the entity");
//Further checks against content...
如果插件的消息为Pre-Validation
或Pre-Operation
并且用户必须将注释与实体关联