1

SP 2010 には、任意の列に対してカスタム検証式とエラー メッセージを指定できる、このクールな新機能があります。

何らかの理由で、リストの既定の NewForm.aspx を、SharePoint デザイナーの [新しいリスト フォームの作成 -> 新しいアイテム フォーム] を使用してカスタム フォームに置き換えると、機能しません。ページにフィールドが明示的に記載されていないすべてのフィールドを反復してレンダリングする ListFormWebpart の代わりに、選択したコンテンツ タイプのすべてのフィールドに FormField コントロールを配置する aspx を作成します。

作成したばかりのカスタム フォームのすべてのフィールドのコードは、次のようになります (説明のため)。

<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>

問題は、「Create New List Form -> New Item Form」フォームでは (新しい sharepoint 2010) 式の検証が機能しないことです。フォームの検証に合格するだけで、保存段階で失敗し、エラー ページが表示されます。

カスタム (非 ListFormWebpart) アイテム ページを使用する場合、FormField コントロールで何らかの方法で構成できますか、または他の方法でこの新しい sp2010 検証メカニズムを利用できますか、またはカスタム GUI 検証を記述する必要がありますか?

ありがとう!

4

1 に答える 1

0

問題は FormField コントロール自体ではなく、これらのフィールドを使用していた DataFormWebPart Web パーツにあります。2 つの問題があります。

  1. uninquness により、フィールドは例外をスローしますが、これは WebPart によって正しく処理され、フィールドのそのような値を持つアイテムが既に存在するというメッセージを表示します。ただし、DataFormWebPart はこの例外を処理しませんが、既定の ListFormWebPart は処理します。カスタム検証式と同様です。
  2. SharePoint フィールド コントロールは IValidator インターフェイスを実装しているため、所有する WebPart はそれらを検証し、適切なメッセージ (必要なルックアップ フィールドなど) を表示できますが、DataFormWebPart はそれを行いません (ListFormWebPart は行います)。
于 2010-07-30T17:41:03.253 に答える