1

我有一个包含多列的自定义列表。验证由自定义内容类型进行。现在我希望两列的组合是唯一的。直到知道我没有找到用板载函数解决这个问题的方法,所以我的想法是使用 eventreceiver 或 customcontenttype。

我尝试了什么:

列表事件接收器

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);
       }

它工作正常,但错误消息不显示为验证错误。这是一个新的错误页面。 在此处输入图像描述

自定义内容类型

如果我尝试在自定义内容类型中进行验证,我将无法从内容类型访问其他字段的值。所以我不能比较两个字段或检查它们是否唯一。

4

1 回答 1

0

如果你想使用ItemEventReceiver比你应该使用的验证Sharepoint Error message page

它会让你更好地了解你的错误消息。我已经使用它了。

喜欢 :

  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 能够对列表的表单进行验证。

于 2012-06-11T07:21:04.340 回答