Formfield列検証式を無視します
-
14-09-2020 - |
質問
SP 2010では、このクールな新機能があり、そこでカスタム検証式と任意の列のエラーメッセージを指定できます。
SharePoint Designerの「新しいリストフォーム - >新しい項目フォーム」を使用して、一覧のデフォルトのNewForm.aspxをカスタムフォームに置き換えるとうまくいきません。これは、ページ上で明示的に言及されたフィールドなしですべてのフィールドを繰り返してレンダリングするListFormWebPartの代わりに、選択したコンテンツタイプのすべてのフィールドに対してFormFieldコントロールを作成します。
ただ作成されたカスタムフォーム上のすべてのフィールドのコードは、次の(説明のためだけに)
のようなものです。<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>
.
問題は、「新しいリストフォームの作成 - >新規アイテムフォーム」フォームを使用して(New SharePoint 2010)式検証は機能しません。それは保存段階でのみ失敗したフォームの検証を渡し、その結果、エラーページ
は、FormFieldコントロールで設定可能な方法で、カスタム(ListFormWebPart)アイテムページを使用する場合、またはカスタムGUIを書く必要がある場合は、この新しいSP2010検証メカニズムを認識しています。検証この場合は?
ありがとう!
解決
問題はFormField Control自体ではありませんが、DataFormWebPart Webパーツではこれらのフィールドを使用していました。2つの問題があります。
- uninqunessを持つフィールドは、フィールドのそのような値を持つアイテムが既に存在するというメッセージを表示するWebPartによって正しく処理されるべき例外をスローします。しかし、DataFormWebPartはこの例外を処理しませんが、デフォルトのListFormWebPartは実行されます。カスタム検証式と似ています。
- SharePointフィールドコントロールは、所有WebPartがそれらを検証して適切なメッセージを表示できるようにIValidatorインターフェイスを実装します(例えば、必要なルックアップフィールドでは)。
所属していません StackOverflow