2010-12-30 25 views
1

空のフィールドの送信を防ぐために、テキストボックスフィールドに検証(InputFormRequiredFieldValidator)を使用するWebパーツがあります。編集モードでにある間にチェックインをクリックしてドラフトを公開するか、またはをクリックすると、この検証が実行されます。実際にフォームを送信しようとしているのではなく、チェックインしています。公開コントロールによって設定されたSharepoint Webパーツの検証

どうすればこの問題を解決できますか?

参照:Sharepoint web part form validation blocks updating web part settings - これには検証コードがあり、どのように検証からEditorPart設定の問題を解決しましたか。

更新:私はEditDisplayModeを検出し、次のようにバリデータを無効にすることを試みた:

if (WebPartManager.DisplayMode.Equals(WebPartManager.EditDisplayMode)) 
{ 
    messageRequiredValidator.Enabled = false; 
} 

これは動作しません - ページのチェックイン時に、私はまだ検証エラーメッセージが表示されます。たぶん私は正しくDisplayModeを検出していないでしょう。

答えて

2

私はBrowseDisplayModeをチェックする必要がありました。私は編集モードで真のデフォルトに頼っているときにバリデータをオフにするルートを使い始めましたが、Designなどの他の表示モードもあり、問題が発生する可能性があります。そこで、次のようにBrowseDisplayModeを確認しました:

WebPartManager mgr = WebPartManager.GetCurrentWebPartManager(Page); 
if (mgr.DisplayMode.Equals(mgr.SupportedDisplayModes["Browse"])) 
{ 
    messageRequiredValidator.Enabled = true; 
} 
else 
{ 
    messageRequiredValidator.Enabled = false; 
} 

これはやっているようです。誰もがこの方法で持っているフィードバックを感謝します。

+0

mgrSupportedDisplayModesとは何ですか? –

+0

Typo(修正済み) - 'mgr.SupportedDisplayModes'にする必要があります。 SupportedDisplayModesは、WebPartManagerでサポートされるモードのコレクションです。どのように検出しますか? – dunxd

0

は、現在のページモードを検出し、SharePointのWebパーツOOTBの検証を行う方法ですだけBrowseDisplayMode

で検証を有効にするWebPartManager.DisplayMode列挙を使用してください。 Madhurが指摘したように

http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.webparts.webpartmanager.displaymode.aspx

+0

私は、検証を行うために 'InputFormRequiredFieldValidator'メソッドを使用しています。したがって、WebPartManager.DisplayModeがBrowseDisplayModeと等しい場合にのみEnabledプロパティをtrueに設定できますか? – dunxd

+0

はい、コントロールロードメソッドでは、ページモードに応じてバリデータを有効または無効にすることができます。 –

+0

は、あなたが示唆していたような私の答えでDisplayModeを検出する方法ですか? – dunxd

1

私はこれをうまく動作させるための苦痛の世界を経験したので、分かち合うと思った。

私は表示モードを正しく取得していましたが、私のコントロールはモードにかかわらず検証を続けました。 CreateChildControlsのメソッドに私のコードを移動

  • すなわち有効 - 「偽」 - デフォルトでRegularExpressionValidatorを無効

    1. 最終的な解決策は、3つのことを関与しました。

    2. ELSE句を追加する!それがなければ、検証は常に真に設定されていました。なぜ私に尋ねないでください。

    ここにコードがあります。以前に提供された例の基本的なバリエーション。

    // Get the current display mode of the WPM 
    WebPartManager wp = WebPartManager.GetCurrentWebPartManager(Page); 
    String mode = wp.DisplayMode.Name; 
    // Enable validation in BrowseDisplayMode only 
    if (wp.DisplayMode == WebPartManager.BrowseDisplayMode) 
    { 
        reqJournal.Enabled = true; 
    } 
    else 
    { 
        reqJournal.Enabled = false; 
        lblMsg.Text = "<strong>" + mode + " mode</strong>: Validation is disabled."; 
    } 
    
  • 0
    //disable javascript on sharepoint edit mode 
    $(function() { 
        var inDesignMode = document.forms[MSOWebPartPageFormName].MSOLayout_InDesignMode.value; 
    
        if (inDesignMode == "1") { 
         // page is in edit mode 
         if ((typeof (Page_Validators) != "undefined") && (Page_Validators != null)) { 
          var i; 
          for (i = 0; i < Page_Validators.length; i++) { 
           ValidatorEnable(Page_Validators[i], false); 
          } 
         } 
        } 
        else { 
         // page is in browse mode 
        } 
    }); 
    
    +0

    ボタンをクリックすると**動作しません**ページが保存されません**動作しません –

    関連する問題