2010-07-12 40 views
1

SP 2010中有这个很酷的新功能,您可以为任何列指定自定义验证公式和错误消息。FormField忽略列验证公式

出于某种原因,当您使用SharePoint设计器的“创建新列表表单 - >新建表单”替换具有自定义表单的默认NewForm.aspx时,它不起作用。它创建一个aspx,它为所选内容类型的每个字段放置一个FormField控件,而不是ListFormWebpart,它迭代和渲染每个字段,而不在页面上明确提到的字段。

一个刚刚创建的自定义窗体上的每个字段的代码是类似于以下(只是为了说明)

<tr> 
    <td width="190px" valign="top" class="ms-formlabel"> 
    <H3 class="ms-standardheader"> 
    <nobr>PhoneNumber</nobr></H3> 
    </td> 
    <td width="400px" valign="top" class="ms-formbody"> 
    <SharePoint:FormField runat="server" id="ff4{$Pos}" ControlMode="New" FieldName="PhoneNumber" __designer:bind="{ddwrt:DataBind('i',concat('ff4',$Pos),'Value','ValueChanged','ID',ddwrt:EscapeDelims(string(@ID)),'@PhoneNumber')}"/> 
    <SharePoint:FieldDescription runat="server" id="ff4description{$Pos}" FieldName="PhoneNumber" ControlMode="New"/> 
    </td> 
</tr> 

的问题是,与“创建新的列表形式 - >新建项目表”形成(新的sharepoint 2010)公式验证不起作用:它通过表单上的验证,仅在保存阶段失败导致出现错误页面。

它是否以任何方式可配置与FormField控件,或者我可以以任何其他方式采用这种新的sp2010验证机制,当使用自定义(非ListFormWebpart)项目页面或我必须编写自定义GUI验证在这种情况下?

谢谢! 。

回答

0

的问题是不是与FormField控件本身,而是与DataFormWebPart网络部分我是用在这些领域有很2点的问题:

  1. 随着uninquness现场抛出它应该是一个例外由WebPart正确处理,显示具有该字段值的项目已存在的消息。但是DataFormWebPart不处理这个异常,而默认的ListFormWebPart可以。它与自定义验证公式类似。
  2. 的SharePoint字段控制实现IValidator接口,使得拥有Web部件可以验证他们并显示适当的消息(例如,对于需要查找字段),但DataFormWebPart没有做到这一点(该ListFormWebPart那样)