1

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)公式验证不起作用:它通过表单验证,仅在保存阶段失败,导致错误页面。

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

谢谢!

4

1 回答 1

0

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

  1. 由于该字段会引发异常,WebPart 应正确处理该异常,显示具有该字段值的项目已存在的消息。但 DataFormWebPart 不处理此异常,而默认 ListFormWebPart 处理。它与自定义验证公式类似。
  2. SharePoint 字段控件实现 IValidator 接口,以便拥有 WebPart 可以验证它们并显示适当的消息(例如,对于必需的查找字段),但 DataFormWebPart 不这样做(ListFormWebPart 这样做)
于 2010-07-30T17:41:03.253 回答