验证自定义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”;
}
}
}
确定..我会查找如何做到这一点。我添加了以下.. 1,对System.Web 2的引用,使用Microsoft.SharePoint.WebControls; 3,覆盖:public override BaseFieldControl FieldRenderingControl {get {return base.FieldRenderingControl; }} ...但我仍然会看起来写我自己的字段控制..我希望你的建议是写,它会让我把valdate一个emtpy日期字段... –
公共覆盖BaseFieldControl FieldRenderingControl { get { BaseFieldControl control = null; control = new YourDateTimeField();/*继承自DateTimeField */ control.FieldName = base.InternalName; 返回控制; } } – MishaU
看起来像你说的把它放在自定义字段类中.. mine是TerminationDateValidation.cs ..它继承自SPFieldDateTime ..(类TerminationDateValidation:SPFieldDateTime)...但是当我使用这一行时:control =新的YourDateTimeField();我得到错误,它不需要0参数..它需要字段,字段名..如果我使用这些确切的参数..像(ieldControl = new TerminationDateValidation(fields,fname);)..然后它说这些参数不' t存在于当前上下文中。 –