FormField忽略列验证公式

时间:2010-07-12 17:08:49

标签: validation sharepoint-2010 sharepointfoundation2010

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

由于某些原因,当您使用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控件进行配置,或者在使用自定义(非ListFormWebpart)项目页面时,我是否可以以任何其他方式利用这个新的sp2010验证机制,或者我是否必须编写自定义GUI在这种情况下验证?

谢谢!

1 个答案:

答案 0 :(得分:0)

问题不在于FormField控件本身,而是使用DataFormWebPart Web部件我正在使用这些字段。有两个问题:

  1. 对于uninquness,字段抛出异常,WebPart应正确处理该异常,显示具有此字段值的项已存在的消息。但DataFormWebPart不处理此异常,而默认的ListFormWebPart则处理此异常。它与自定义验证公式类似。
  2. SharePoint字段控件实现IValidator接口,以便拥有的WebPart可以验证它们并显示相应的消息(例如,对于所需的查找字段),但DataFormWebPart不这样做(ListFormWebPart会这样做)