SharePoint 2010 使用后台代码向SP.UI.ModalDialog.showModalDialog传值
2011-11-08 16:07 四毛的家 阅读(906) 评论(0) 编辑 收藏 举报文章http://www.cnblogs.com/sygwin/archive/2011/11/08/2241061.html,介绍了弹出窗口和主页面之间的传值。那么如何将后台变量的值传给弹出窗口呢?
能想到的解决方案思路是:前台写弹出窗口的js代码,后台使用Page.ClientScript.RegisterStartupScript注册js,调用写好的js函数。这样做行不通,会报缺少对象之类的错误。下面是操作步骤:
1,新建一个可视webpart,并添加一个application page页并命名为SweetDialogPage.aspx。
在可视webpart的ascx页面添加下面的js代码:
<script type="text/javascript">
function openMySweetModalDialog(id) {
var options = SP.UI.$create_DialogOptions();
options.width = 500;
options.height = 250;
options.url = "/_layouts/PopUpDialog/SweetDialogPage.aspx?id=" + id;
options.dialogReturnValueCallback =
Function.createDelegate(null, whenMyModalDialogCloses);
SP.UI.ModalDialog.showModalDialog(options);
}
function whenMyModalDialogCloses() {
alert('That was totally sweet.');
}
</script>
在SweetDialogPage.aspx页面接收参数id并显示,代码省略。
然后在可视webpart的cs页面里,新建一个方法:
protected void OpenMySweetModalDialog(int id)
{
// create ECMAScript to call the dialog function and pass the id
var script = string.Format(@"openMySweetModalDialog('{0}'); ", id);
// emit script to run on page load
Page.ClientScript.RegisterStartupScript(
typeof(UserControl), Guid.NewGuid().ToString(), script, true);
}
最后在Page_Load方法里,调用上面的方法:OpenMySweetModalDialog(5);
部署webpart,可以看到当放置webpart的页面载入后,并不能如我们期望的那样弹出窗口,而是报错了。那么该如何解决呢?微软提供了SP.SOD.executeOrDelayUntilScriptLoaded方法
将OpenMySweetModalDialog方法里的代码改成如下内容:
var script = string.Format(
@"function reallyOpenDialogForRealYouGuys() {{
openMySweetModalDialog('{0}');
}};
SP.SOD.executeOrDelayUntilScriptLoaded(reallyOpenDialogForRealYouGuys, 'sp.ui.dialog.js'); ",
id);
// emit script to run on page load
Page.ClientScript.RegisterStartupScript(
typeof(UserControl), Guid.NewGuid().ToString(), script, true);
关于SP.SOD.executeOrDelayUntilScriptLoaded的更多知识,请google
【推荐】编程新体验,更懂你的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)