验证自定义Sharepoint字段是否为空?

问题描述:

我在Visual Studio 2010中使用了Sharepoint 2010 ..自定义字段。验证自定义Sharepoint字段是否为空?

我创建了一个自定义字段。这个特定的日期时间字段(“终止日期”)。如果它是空白并且另一个字段(“合同终止”等于是),我希望它验证失败。

所以我以前做过这个计算字段。而且,它的工作原理,但它将验证错误放在编辑窗体的顶部,而不是在我希望它的“终止日期”字段旁边。就像通常情况下,如果字段未在自定义字段中使用GetValidatedString进行验证。

所以,因为它在错误的地方,我做了一个自定义字段。但是因为日期是空白的,所以它从不碰到GetValidatedString方法。我错过了什么吗?如果“终止日期”栏位为空白,是否有另一种方法可使验证失败并在“终止日期”字段旁边?

我尝试使用事件接收器解决方案..也有问题,它也会把错误消息放在顶部..不是在终止日期字段旁边。

对此提出建议?

对于自定义字段,您可以覆盖FieldRenderingControl,编写自己的FieldControl。如果你不使用行踪列表此自定义字段,你可以从DateTimeField继承了你fieldcontrol并覆盖Validate方法如:

public override void Validate() 
{ 
    base.Validate(); 
    if (IsValid) 
    { 
     if (!(your validation)) 
     { 
      IsValid = false; 
      ErrorMessage = “youe message”; 
     } 
    } 
} 
+0

确定..我会查找如何做到这一点。我添加了以下.. 1,对System.Web 2的引用,使用Microsoft.SharePoint.WebControls; 3,覆盖:public override BaseFieldControl FieldRenderingControl {get {return base.FieldRenderingControl; }} ...但我仍然会看起来写我自己的字段控制..我希望你的建议是写,它会让我把valdate一个emtpy日期字段... –

+0

公共覆盖BaseFieldControl FieldRenderingControl { get { BaseFieldControl control = null; control = new YourDateTimeField();/*继承自DateTimeField */ control.FieldName = base.InternalName; 返回控制; } } – MishaU

+0

看起来像你说的把它放在自定义字段类中.. mine是TerminationDateValidation.cs ..它继承自SPFieldDateTime ..(类TerminationDateValidation:SPFieldDateTime)...但是当我使用这一行时:control =新的YourDateTimeField();我得到错误,它不需要0参数..它需要字段,字段名..如果我使用这些确切的参数..像(ieldControl = new TerminationDateValidation(fields,fname);)..然后它说这些参数不' t存在于当前上下文中。 –