当用户从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); }
现在我有以下查询.
>单击“提交”或“提交”时,不会触发SubmitDlg和CloseDlg
取消.
>这是从模态对话框提交表单(SubmitDlg方法)和取消对话框(CloseDlg方法)的正确方法吗?
>此外,只有在保存记录时没有验证错误时才会显示此模态对话框,这意味着如果需要任何字段值,并且我们没有放任何值,那么它应该显示内置的红色消息.
谢谢
解决方法
在模态对话框的选项中,您需要将引用传递给您的回调函数,如下所示:
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); }
要完成这项工作,您需要使用以下内容将函数连接到服务器端代码中的“确定”按钮:
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); }