SharePoint 2010モーダルダイアログを再利用することは可能ですか?

sharepoint.stackexchange https://sharepoint.stackexchange.com/questions/16893

  •  16-10-2019
  •  | 
  •  

質問

SharePoint Webパーツの単純な「はい/いいえ」モーダルダイアログが必要です。ここでホイールを再発明したくありません。 SharePointは、この目的のためにいくつかの非常に優れたモーダルダイアログを使用します。ShowModaldialog()関数の小さなASPXページのごみを作成する代わりに、それらを再利用することは可能ですか

役に立ちましたか?

解決

実際には、Dialog.masterを使用する必要はありません。2010年のダイアログフレームワークを使用するのに役立ちないからです。 Default.masterは、リボンバー、ナビゲーション、およびダイアログで望まないその他のUIコンポーネントを隠すCSSがあるため、正常に動作します(...説明しない限り)。

ダイアログを起動するには、JavaScriptコードを実行する必要があります(...親ページに移動します):

function showModalDialog(title) {
    var options = SP.UI.$create_DialogOptions();
    options.title = title;
    // width and height are optional as the framework autosizes the dialog to the content
    options.width = 600;
    options.height = 485;
    options.url = "/_layouts/htmleditor.aspx";
    options.allowMaximize = true;
    // you can specify an optional callback
    options.dialogReturnValueCallback = Function.createDelegate(null, dialogCallback);
    SP.UI.ModalDialog.showModalDialog(options); 
}

ダイアログページに標準のOKとキャンセルボタンがあると仮定すると(... VS2010プロジェクトで作成されたベースSharePointアプリケーションページになる可能性があります)、それらのボタンのイベントをオンにするだけで、Code-Behind内で可能ですダイアログを閉じるためにいくつかのJavaScriptを放出し、オプションで親ページに値を削除します。

    void CancelDialog_Click(object sender, EventArgs e)
    {
        if (this.IsDialogMode)
            // in commonModalDialogClose the zero denotes Cancel and a one denotes OK.  The 2nd argument is an optional value to return to the parent page's callback function...assuming one was defined.
            this.ClientScript.RegisterClientScriptBlock(this.GetType(), "DismissRecoverPasswordDialog", "window.frameElement.commonModalDialogClose(0, \"\");", true);
        else
            Response.Redirect(ReferralUrl.Value);
    }

それが役立つことを願っています...あなたが持っているアリのフォローアップの質問をすることをheしないでください。

他のヒント

はい、それらを再利用できます。 SharePointが出荷する.masterファイルを使用することがすべてです。 Dialog.masterのようなマスターページは、ポップアップに表示されるページ用に設計されており、自分で書くのではなく、再利用する必要があります。 OKが付属しており、コンテンツを配置できるボタンとプレースホルダーをキャンセルします。ページでは、マスターページギャラリーにないため、MasterPageFile属性でそれらを参照する必要があります。

MasterPageFile="~/_layouts/dialog.master"

背後のコードでは、このような「OK」ボタンをクリックするとコードを配線できます。

protected override void OnInit(EventArgs e)
        {
            base.OnInit(e);
            ((DialogMaster)this.Page.Master).OkButton.Click += new EventHandler(this.OkButtonClicked);            
        }

OkButtonのテキストプロパティを「はい」に変更し、それが理にかなっている場合は「いいえ」にボタンをキャンセルできます。

ポップアップダイアログの再利用再利用に関する限り、クエリ文字列パラメーターを使用してページ上のコンテンツを操作できます。たとえば、yes/noボタンを使用すると、通常、メッセージが表示されます。メッセージをリソースファイルに保存し、クエリ文字列にリソースキーをASPXダイアログページに渡して、異なるメッセージを表示できます。

また、既存のSharePointダイアログボックスを再利用できると思われる場合は、予想されるクエリ文字列パラメーターを調べて独自のパラメーターを送信し、SharePointのポップアップページを使用できます。

ライセンス: CC-BY-SA帰属
所属していません sharepoint.stackexchange
scroll top