2011-10-26 11 views
2

私はVisual Studio 2010のカスタムフィールドでSharepoint 2010 ..を使用しています。空の場合、Custom Sharepointフィールドを検証しますか?

私はカスタムフィールドを作成しました。この特定のものは日時フィールド(「終了日」)です。それが空白で、別のフィールド(「契約終了」が「はい」に等しい)であれば、検証に失敗します。

私はこれまで計算フィールドでこれを行っていました。そして、それは動作しますが、検証フォームは編集フォームの一番上に表示されます。カスタムフィールドでGetValidatedStringを使ってフィールドの検証に失敗した場合など、通常はそうであるように、「終了日」フィールドの隣には表示されません。

それは間違った場所にあるので、私はカスタムフィールドを作った。しかし、日付は空白なので、決してGetValidatedStringメソッドをヒットしません。何か不足していますか? 'Termination Date'フィールドが空白の場合、検証に失敗し、 'Termination Date'フィールドの横にある別の方法がありますか?

イベントレシーバのソリューションを使用しても試してみました。問題は、エラーメッセージを終了日のフィールドの最上部に付けないことです。

提案?

答えて

2

カスタムフィールドの場合は、FieldRenderingControlを上書きして、独自のFieldControlを書き込むことができます。あなたが行方でこのカスタムフィールドを使用しない場合は、リストあなたはDateTimeFieldからあなたfieldcontrolを継承し、Validate方法の例オーバーライドすることができます:

public override void Validate() 
{ 
    base.Validate(); 
    if (IsValid) 
    { 
     if (!(your validation)) 
     { 
      IsValid = false; 
      ErrorMessage = “youe message”; 
     } 
    } 
} 
+0

[OK]を..私は..私は次のように追加することを行う方法をルックアップします。.. 1、Microsoft.SharePoint.WebControlsを使用したSystem.Web 2への参照。 3、オーバーライド:パブリックオーバーライドBaseFieldControl FieldRenderingControl {get {return base.FieldRenderingControl; }} ...しかし、私はまだ自分のフィールドコントロールを書いています。私はあなたの提案が書かれていることを望んでおり、valdateにemtpy日付フィールドを入れさせてくれるでしょう... –

+0

public override BaseFieldControl FieldRenderingControl { get { BaseFieldControl control = null; control = new YourDateTimeField();/* DateTimeFieldから継承されます*/ control.FieldName = base.InternalName; 戻り制御; } } – MishaU

+0

カスタムフィールドクラスにこれを入れているようです。私のものはTerminationDateValidation.csです。SPFieldDateTime ..(TerminationDateValidation:SPFieldDateTimeクラス)を継承していますが、この行を使用するとcontrol =新しいYourDateTimeField();私は0引数を取らないというエラーが発生します。フィールド名が必要です。fieldname ..それらの正確な引数を使用すると..(ieldControl = new TerminationDateValidation(fields、fname);)現在のコンテキストには存在しません。 –

関連する問題