web-dev-qa-db-ja.com

SharePointのボタンクリックからSP.UI.ModalDialogを閉じる方法は?

ユーザーがEDITForm.aspxからドキュメントを保存するときに、確認ダイアログを表示したい。だから私は次のJavaScriptコードを書きました。

function PreSaveAction() {

 var _html = document.createElement();
 _html.innerHTML = "  <input  type=\"button\"  value=\"Submit\"    onclick ='javascript:SubmitDlg();'  />  <input  type=\"button\"  value=\"Cancel\" onclick =\"javascript:CloseDlg();\"     /> </td>           </tr>   </tbody> </table>";


 var options = {
            title: "Confirm",
            width: 400,
            height: 200,
            showClose: false,
            allowMaximize: false,
            autoSize: false,
            html: _html           
        };
        SP.UI.ModalDialog.showModalDialog(options); 

}

function SubmitDlg() { 
   SP.UI.ModalDialog.commonModalDialogClose(SP.UI.DialogResult.OK);


}

function CloseDlg() {
     SP.UI.ModalDialog.commonModalDialogClose(SP.UI.DialogResult.Cancel);
}

今、私は次の質問があります。

  1. [送信]または[キャンセル]をクリックしても、SubmitDlgおよびCloseDlgは起動されません。
  2. これは、モーダルダイアログからフォーム(SubmitDlgメソッド)とキャンセルダイアログ(CloseDlgメソッド)を送信する正しい方法ですか?
  3. また、このモーダルダイアログボックスは、レコードの保存中に検証エラーがない場合にのみ表示されます。つまり、フィールド値が必要で、値を入力していない場合は、組み込みの赤色のメッセージが表示されます。

ありがとう

7
mit

モーダルダイアログのオプションで、次のようにコールバック関数への参照を渡す必要があります。

var opt = SP.UI.$create_DialogOptions();
opt.width = 500;
opt.height = 200;
opt.url = url;
opt.dialogReturnValueCallback = MyDialogClosed;

SP.UI.ModalDialog.showModalDialog(opt);

次に、コールバック関数でステータスを確認できます。

function MyDialogClosed(result, value) {
if (result == SP.UI.DialogResult.Cancel) {
    //Cancel. Do whatever
}
else { //SP.UI.DialogResult.OK
    //User clicked OK. You can pickup whatever was sent back in 'value'    }

}

ダイアログから何かを送り返す必要がある場合は、これを使用できます。

function okClicked()
{
    SP.UI.ModalDialog.commonModalDialogClose(1, someobject);
}

これを機能させるには、次のようなものを使用して、サーバー側コードの[OK]ボタンに関数を接続する必要があります。

protected override void OnLoad(EventArgs e)
    {
        if (Master is DialogMaster)
        {
            var dm = Master as DialogMaster;
            if(dm != null) dm.OkButton.Attributes.Add(@"onclick", @"return okClicked();");
        }

        base.OnLoad(e);
    }
5
Chaholl

クラス「CloseSPPopUp」をbtnに追加します。クリックして閉じます。

このスクリプトを「CloseSPPopUp」btnを持つページに追加します

$('.CloseSPPopUp').click(function(){            
window.top.CloseSPUIPopoup();       
});

$('.CloseSPPopUp').click(function(){
window.top.CloseSPUIPopoup();
});

今uがポップアップを呼び出しているメインページに

function CloseSPUIPopoup{
$(".ms-dlgContent").hide();
}

理由:ms-dlgContentクラスが親ページにあり、CloseSPPopUpが実行時に作成されるIframeにある

0
Vivek Dhanuka