SharePoint 2010 Modal Dialog
| SharePoint 2010 Modal Dialog | Tweet |
Functionality provided by Modal Dialog: -
- Display HTML content in Modal Dialog
- Display external url (e.g. http://www.google.com) or any application page of SharePoint in the form of an iframe
- Show/Hide Close button
- Show/Hide Maximize button
Mentioned below are the steps to integrate a modal dialog in the SharePoint 2010:
- The JavaScript files for the ECMAScript Object Model (SP.js, SP.Core.js, SP.Ribbon.js, and SP.Runtime.js ) are installed in the %ProgramFiles%\Common Files\Microsoft Shared\web server extensions\14\TEMPLATE\LAYOUTS directory. We need to add these JavaScript files in the page.
- To open a dialog we need to use the 'SP.UI.ModalDialog.showModalDialog' method from the ECMAScript Client Object model and we can pass following parameters as per requirement:
- width: Set the width of the modal dialog
- height: Set the height of the modal dialog
- html: the ID HTML control or HTML content to be displayed in modal dialog
- url: Page url or relative path
- dialogReturnValueCallback: In case we want some code to run after the dialog is closed, set JavaScript method name
- allowMaximize: Set to true or false to show hide this option.
- showClose: Set to true or false to show or hide the close button
Examples:
a. Sample code to show HTML content in the SharePoint 2010 modal dialog:
HTML code
|
// Modal Dialog HTML content <div id="divModalDialogContent"> Hello World! <input type="button" value="OK"onclick="SP.UI.ModalDialog.commonModalDialogClose(SP.UI.DialogResult.OK, 'Ok clicked'); return false;" class="ms-ButtonHeightWidth" /> <input type="button" value="Cancel"onclick="SP.UI.ModalDialog.commonModalDialogClose(SP.UI.DialogResult.cancel, 'Cancel clicked'); return false;" class="ms-ButtonHeightWidth" /> </div> |
JavaScript Code
|
<script type="text/javascript"> // Call openDialog method on button click or on page load function openDialog() { var options = { html: divModalDialogContent, // ID of the HTML tag // or HTML content to be displayed in modal dialog width: 600, height: 300, title: "My First Modal Dialog", dialogReturnValueCallback: dialogCallbackMethod, // custom callback function allowMaximize: true, showClose: true }; SP.UI.ModalDialog.showModalDialog(options); } //Results displayed if 'OK' or 'Cancel' button is clicked if the html content has 'OK' and 'Cancel' buttons function onDialogClose(dialogResult, returnValue) { if (dialogResult == SP.UI.DialogResult.OK) { alert('Ok!'); } if (dialogResult == SP.UI.DialogResult.cancel) { alert('Cancel'); } } // Custom callback function after the dialog is closed function dialogCallbackMethod() { alert('Callback method of modal dialog!'); } </script> |
b. Sample code to open a web page or application page in the modal dialog:
JavaScript code
|
<script type="text/javascript"> function openDialog() { var options = { url: "<Page Url>", width: 600, height: 300, title: "My First Modal Dialog", }; SP.UI.ModalDialog.showModalDialog(options); } </script> |
Mentioned below are real time scenarios, you may encounter while using out of box modal dialog of SharePoint 2010 :-
1. Scenario: If page is too long and with the movement of vertical scrollbar, modal popup also move with the scrollbar. Ideally position of modal dialog should be fix.
Solution: Put mentioned below CSS class in you page:
.ms-dlgContent
{
position: fixed!important;
}
2. Scenario: Display modal popup on page load depending. Sometimes the page don't show modal dialog and a JavaScript error message comes (error: showModalDialog does not exist in SP.UI.ModalDialog).
Solution: Use following code- ExecuteOrDelayUntilScriptLoaded(<showModelMethodName>, "sp.js");
This method be make sure that js method showModalDialog is not called till sp.js is fully loaded.
3. Scenario: Sometime we need to close popup from server side and also parent window refresh is required after saving modal dialog data in the SharePoint.
Solution: Mentioned below is the sample code to implement above requirement-
a. Check current page is popup page or not
|
//Custom list or library form New, Edit or Display if(SPContext.Current.IsPopUI) { // Code } OR //Layout pages you can ensure byquery string if(Request.QueryString["IsDlg"]=="1") { //code } |
b. To close popup use mentioned below JavaScript code:
|
<script type="text/javascript"> //Close popup on cancel button click function CloseForm() { window.frameElement.cancelPopUp(); return false; } //Commit/Refresh parent window on save button click function SaveForm() { window.frameElement.commitPopup(); return false; } </script> |
c. use following server side code to close or save modal dialog:
|
//Put following code in the button click event, if update panel is not present in the page ClientScript.RegisterClientScriptBlock(this.GetType(), Guid.NewGuid().ToString(),"CloseForm()", true); OR // Put following code in the button click event, if update panel is present in the page ScriptManager.RegisterClientScriptBlock(this.Page, this.GetType(), Guid.NewGuid().ToString(),"CloseForm()", true); |
4. Scenario: After closing modal dialog, all controls disappear from the page.
Solution: If you assign HTML element id like we have done in our first example, you might encounter this issue, we should set copy of modal data instead of assigning ID. See sample code below:
|
<script type="text/javascript"> //Pass copy of HTML content instead of content control ID function openDialog() { var cloneModalContent = document.createElement('div'); cloneModalContent.innerHTML = document.getElementById('divModalDialogContent').innerHTML; var options = { html: cloneModalContent, //html content to be displayed in modal dialog width: 600, height: 300, title: "My First Modal Dialog", dialogReturnValueCallback: customOnDialogClose, //custom callback function allowMaximize: true, showClose: true }; SP.UI.ModalDialog.showModalDialog(options); } </script> |
b. Sample code to save or close popup from server side.
c. After closing modal dialog, all controls disappear from the page.
SharePoint 2010 Modal Dialog的更多相关文章
- SharePoint 2010 Pop-Up Dialogs
转:http://kyleschaeffer.com/sharepoint/sharepoint-2010-pop-up-dialogs/ SharePoint 2010 makes it incre ...
- Using SharePoint 2010 dialogs
转:http://www.techbubbles.com/sharepoint/using-sharepoint-2010-dialogs/ SharePoint 2010 dialogs are J ...
- Upgrade from SharePoint 2010 to SharePoint 2016
[转]http://nikcharlebois.com/upgrade-from-sharepoint-2010-to-sharepoint-2016/ In this blog, I will go ...
- SharePoint 2010 常用技巧及方法总结
1.代码调试确定进程cd c:\windows\system32\inetsrvappcmd list wppause注:保存成批处理文件,查看进程.bat,用的时候双击即可 2.类似列表新建打开方式 ...
- 使用SharePoint 2010 母版页
SharePoint 2010母版页所用的还是ASP.NET 2.0中的技术.通过该功能,实现了页面框架布局与实际内容的分离.虽然在本质上自定义母版页的过程和以前版本的SharePoint大致相同,但 ...
- Searching External Data in SharePoint 2010 Using Business Connectivity Services
from:http://blogs.msdn.com/b/ericwhite/archive/2010/04/28/searching-external-data-in-sharepoint-2010 ...
- How to: Add SharePoint 2010 Search Web Parts to Web Part Gallery for Upgraded Site Collections
When you upgrade to Microsoft SharePoint Server 2010, some of the new SharePoint Enterprise Search W ...
- Creating SharePoint 2010 Event Receivers in Visual Studio 2010
转:http://msdn.microsoft.com/en-us/library/gg252010(v=office.14).aspx Summary: Learn how to create a ...
- 使用SharePoint 2010的母版页
转:http://tanyanbo2.blog.163.com/blog/static/97339159201111591458902/ SharePoint 2010母版页所用的还是ASP.NET ...
随机推荐
- linux-c/c++调试利器gdb、ddd小试
linux-c/c++调试利器gdb.ddd小试 原文链接: http://deepfuture.iteye.com/blog/749148 博客分类: C++/C/lisp CC++C#LinuxU ...
- ssh无密码登录设置方法以及出现问题 ECDSA host key 和IP地址对应的key不同的解决
最近在做hadoop,因为要求各主机之间的用户必须相同,且为方便远程登录,需配置无密码登录 先附上ssh无密码登录设置方法: 先生成密钥并配置无ssh无密码登录本机,输入命令: ssh-keygen ...
- Zookeeper实现分布式锁服务(Chubby)
在分布式系统中,如果不同的系统或是同一个系统的不同主机之间共享了一个或一组资源,那么访问这些资源的时候,往往需要互斥来防止彼此干扰,来保证一致性,在这种情况下,便需要使用到分布式锁例如有N台服务器同时 ...
- ASP.NET的三层架构(DAL,BLL,UI)
ASP.NET的三层架构(DAL,BLL,UI) BLL 是业务逻辑层 Business Logic Layer DAL 是数据访问层 Data Access Laye ...
- 腾讯应用开发3006 : name lookup timed out 错误
昨天到今天发现应用访问不正常,用户发表数据很少,一查日志,QQ的 openApi 返回的结果全是 name lookup timed out,莫名其妙. 在服务器上 ping , nslookup , ...
- jQuery复习:第四章
一.jQuery中的事件 1.加载DOM $(document).ready()和window.onload方法具有类似功能,但是执行时机不同.window.onload方法是在网页中所有的元素都加载 ...
- 10.hibernate缓存机制详细分析(转自xiaoluo501395377)
hibernate缓存机制详细分析 在本篇随笔里将会分析一下hibernate的缓存机制,包括一级缓存(session级别).二级缓存(sessionFactory级别)以及查询缓存,当然还要讨论 ...
- openwrt 汉化
make menuconfig 添加luci LuCI--->Collections----- <*> luci 添加luci的中文语言包 LuCI--->Translatio ...
- Leetcode 39 40 216 Combination Sum I II III
Combination Sum Given a set of candidate numbers (C) and a target number (T), find all unique combin ...
- From windows live writer
天线数据长度: 4*14*9664*4 = 2164736 信道估计长度: 614400 均衡: 12*1200*4 = 57600