SharePoint 2010モーダルダイアログを再利用することは可能ですか?
-
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のポップアップページを使用できます。