SharePoint 2010 使用SP.UI.ModalDialog.showModalDialog(options)对话框框架传值
2011-11-08 13:55 四毛的家 阅读(2849) 评论(0) 编辑 收藏 举报如图,主页面叫BasePage.aspx,被弹出的页面叫popupForm.aspx,弹出窗口的代码是:
var options = {
url: ‘popupForm.aspx’,
args: null,
title: ‘Select Value’,
dialogReturnValueCallback: dialogCallback
};
SP.UI.ModalDialog.showModalDialog(options);
其中dialogCallback是回调函数。可以参考http://msdn.microsoft.com/en-us/library/ff410058.aspx
那么如何在两个页面之间传值呢?
一.由BasePage.aspx页面向popupForm.aspx传值。
1,最典型的就是使用GET方法传递
var options = {
url: ‘popupForm.aspx?itemID=7′,
args: null,
title: ‘Select Value’,
dialogReturnValueCallback: dialogCallback
};
SP.UI.ModalDialog.showModalDialog(options);
接收方法:需要在popupForm.aspx后台接收,c#代码如下:
int itemID = Convert.ToInt32(Request.QueryString["ItemID"]);
2.使用options中的参数,将弹出窗口代码改写如下:
var options = {
url: ‘popupForm.aspx’,
args: 7,
title: ‘Select Value’,
dialogReturnValueCallback: dialogCallback
};
SP.UI.ModalDialog.showModalDialog(options);
在popuForm.aspx后台接收方法,这里就不再需要用后台代码了,js即可,代码如下:
var itemID = window.frameElement.dialogArgs;
二,向BasePage.aspx页面传回值。
首先,先看一下上面的回调函数dialogCallback的常见代码:
function dialogCallback (dialogResult, returnValue) {
if(dialogResult == SP.UI.DialogResult.ok){
// The user clicked the OK button.
// handle commitPopup
} else{
// The user clicked the Cancel button.
// handle cancelPopup
}
}
关闭弹出窗口的页面有三种方法可以调用:
1,window.frameElement.cancelPopUp(),调用该方法,将关闭窗口。返回值result是:SP.UI.DialogResult.cancel
2.window.frameElement.commitPopup(),调用该方法,将关闭窗口。返回值result是:SP.UI.DialogResult.ok
3.window.frameElement.commonModalDialogClose(),同上,不过返回值是指定的第一个参数。
上面三个方法如有疑问,可以msdn查询。注意红色标注的U的大小写区分。
下面是传回值的示例代码
1,如果是想使用c#实现,注意传回的值是数字7:
- private void CloseDialog()
- {
- string response
- = string.Format(“<script type=’text/javascript’>window.frameElement.commitPopup(\”{0}\”);</script>”, 7);
- Context.Response.Flush();
- Context.Response.End();
- }
2.如果想使用js实现,传回值的值依然是数字7:
<script type=’text/javascript’>window.frameElement.commitPopup(“7”);</script>
下面是BasePage.aspx的接收方法:接收返回值7,并弹出。
- function dialogCallback (dialogResult, returnValue)
- {
- if (returnValue != null) {
- alert(returnValue);//弹出窗口
- }
- return;
- }
原文参考:http://www.sharepointdevelopment.me/2011/06/passing-data-to-and-from-sharepoint-modal-dialogs/
http://www.chakkaradeep.com/post/Using-the-SharePoint-2010-Modal-Dialog.aspx
下面是一个实例代码(只是觉得能够给人启发):利用jQuery,将主页面内文本框的值,传递给弹出窗口并绑定到label上
function DisplayDialog() {
var options = {
url: ‘PopupFormExample.aspx’,
args: $(‘#txtInput’).val(),
title: ‘Select Value’,
dialogReturnValueCallback: callbackMethod
};
SP.UI.ModalDialog.showModalDialog(options);
}
使用label接收参数
$(“span[id$='lblOutput']“).html(window.frameElement.dialogArgs);
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· .NET Core 托管堆内存泄露/CPU异常的常见思路
· PostgreSQL 和 SQL Server 在统计信息维护中的关键差异
· C++代码改造为UTF-8编码问题的总结
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· DeepSeek “源神”启动!「GitHub 热点速览」
· 我与微信审核的“相爱相杀”看个人小程序副业
· Plotly.NET 一个为 .NET 打造的强大开源交互式图表库
· 上周热点回顾(2.17-2.23)