我有一个包含多列的自定义列表。验证由自定义内容类型进行。现在我希望两列的组合是唯一的。直到知道我没有找到解决这个问题的方法,所以我的想法是使用eventreceiver或customcontenttype。
我尝试了什么:
ListEventReceiver
public override void ItemAdding(SPItemEventProperties properties)
{
if (properties.AfterProperties["a1"].ToString() == properties.AfterProperties["a2"].ToString())
{
properties.Status = SPEventReceiverStatus.CancelWithError;
properties.Cancel = true;
properties.ErrorMessage = "Failure";
}
base.ItemAdding(properties);
}
它工作正常,但错误消息未显示为验证错误。这是一个新的错误。
CustomContenttype
如果我尝试在自定义内容类型中进行验证,则无法从contenttype访问其他字段的值。所以我无法比较两个字段或检查它们是否是唯一的。
答案 0 :(得分:0)
如果您想使用ItemEventReceiver
进行验证,则应使用Sharepoint Error message page
。
它会让你更好地使用Errormessage.I已经使用过它。
喜欢:
if (properties.AfterProperties["a1"].ToString() == properties.AfterProperties["a2"].ToString())
{
properties.Status = SPEventReceiverStatus.CancelWithRedirectUrl;
properties.RedirectUrl = properties.WebUrl + "/_layouts/error.aspx?ErrorText=Entry is Failure";
}
或另一种方式是使用PreSaveAction和javascript能够对列表表单进行验证。