Открытие модального окна, получение из него данных

 Комментарии можно оставлять "здесь"
 
Полезно бывает не гонять пользователя со страницы на страницу в момент, например, установки значений в таблицах, а открывать модельные окна с корректировкой или отображением подробной информации. Вот пример скрипта, который вызывает модальное окно со станицей, которая передана как параметр


<html  xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
    <head>
        <title>Карточка документа</title>
        <SharePoint:ScriptLink ID="scriptLink" Name="sp.ui.dialog.js" LoadAfterUI="true" Localizable="false" runat="server"> </SharePoint:ScriptLink>
        <script type="text/javascript" language="javascript">
            function OpenDlg(URL) {
                var options = SP.UI.$create_DialogOptions();
                options.url = URL;
                options.dialogReturnValueCallback = onDialogClose;
                SP.UI.ModalDialog.showModalDialog(options);
            }

            function onDialogClose(dialogResult, returnValue) {
                if (dialogResult == SP.UI.DialogResult.OK) {
               
                }
                if (dialogResult == SP.UI.DialogResult.cancel) {
                }
            }
        </script>
    </head>
    <body>
....

 Как пример вызова этого окна можно использовать

<a target="_self" runat="server" id="selectDlg" onclick="OpenDlg('/_layouts...');">


Чтобы из модального окна вернуть значение можно тем или иным способом создавать ссылку с необходимыми параметрами:
<a target="_self" onclick="window.frameElement.commonModalDialogClose(1, 'resultvalue');">закрыть</a>

а полученный результат уже обрабатывать в функции onDialogClose()

function onDialogClose(dialogResult, returnValue) {
                if (dialogResult == SP.UI.DialogResult.OK) {
                    $("#<%=tbControl.ClientID %>").val(returnValue.substring(returnValue.indexOf('~') + 1));
                }
                if (dialogResult == SP.UI.DialogResult.cancel) {
                }
            }


модальное окно можно и закрывать по кнопке:

            Context.Response.Write("<script type='text/javascript'>window.frameElement.commitPopup();</script>");
            Context.Response.Flush();
            Context.Response.End();

Скрипт для отмена и закрытия модального окна:
<a href="#" onclick="window.frameElement.cancelPopUp(); return false;">Cancel</a>


 Комментарии можно оставлять "здесь"

Комментариев нет:

Яндекс.Метрика