2009-03-24 16 views
3

MOSS 2007のWebパーツを作成しています。そのwebpartのテキストフィールドを検証する必要があります。また、必要なフィールドバリデーターを使用しています。SharePointのWebパーツに必要なフィールドバリデーターを追加する

次のように私は必要なフィールドバリデータを作成しています:

vldProjectError = new RequiredFieldValidator(); 
vldProjectError.ForeColor = Color.Red; 
vldProjectError.ErrorMessage = Resources.LABEL_PROJECT_ERROR; 
vldProjectError.ControlToValidate = txtProjectName.ClientID; 
vldProjectError.Display = ValidatorDisplay.Dynamic; 
this.Controls.Add(vldProjectError); 

上記のコードは、第CreateChildControlsの()オーバーライドです。 このWebパーツページを開くと、SharePointで一般的なエラーメッセージが表示されます。 デバッグでエラーをトラップできません。

デバッガがレンダリング()メソッド

のSharePoint Webパーツにバリデータを使用する方法任意のアイデアに入ることはありませんので、私は、例外がCreateChildControlsの(後にスローされることに気づい)とレンダー()メソッドの前に?私が行方不明のものはありますか?

答えて

3

私はこの問題を解決できました。

我々は代わり

vldProjectError.ControlToValidate = txtProjectName.ClientID; 

txtProjectName.ID = "txtProjectName";  
vldProjectError.ControlToValidate = txtProjectName.ID; 

を使用する必要があり、これは()メソッドCreateChidControls内部で行われるべきです。

0

web.configのブラウザにエラー出力を有効にしましたか?たぶんそれはあなたにもっと詳細なメッセージを与えるでしょう。

2

私は二つのことをしようとするだろう:SharePointのために開発中のエラー出力を有効にする

  1. は間違いなく便利ですが、それを可能にするためにthis postに従ってください。
  2. CreateChildControlsではなく、RenderメソッドでControlToValidateプロパティを割り当ててみてください。または、txtProjectNameがコントロールコレクションに追加された後に少なくとも行います。
0

私はバリデータコントロールと同じ問題がありました。検証済みコントロールのcontrolIdプロパティは、webpartのcontrolsコレクションに追加するまでnullです。

this.Controls.Add(txtProjectName); 

チェックこれはあなたのWebパーツをデバッグ、検証コントロールのClientIDプロパティを見て:だから、バリデータはこの行の後に設定する必要があります。

関連する問題