четверг, 2 февраля 2012 г.

Работа с application page

1. При работе с web-parts иногда приходится добавлять application page, для того чтобы открывать ее в модальном окне необходимо добавить javaScript:
function openEditWindow()
    {
         var options = {
             url: '/_layouts/requisition/editRequisition.aspx',                     
                       };
        SP.UI.ModalDialog.showModalDialog(options);
     }

2. Если мы хотим на нашей странице получить данные из кокого-либо элемента списка, то мы можем передать id этого элемента, тогда функция js будет выглядеть так:

function openEditWindow(idRequisition)
    {
         var options = {
             url: '/_layouts/requisition/editRequisition.aspx?id_=' + idRequisition,                     
                       };
        SP.UI.ModalDialog.showModalDialog(options);
     }


3. Чтобы закрыть по кнопке модальное окно, нужно в обработчик button добавить код:
this.Page.Response.Clear();
this.Page.Response.Write("<script type=\"text/javascript\">window.frameElement.commonModalDialogClose(1, '1');</script>");
 this.Page.Response.End();

4.Если мы хотим как-то оповестить пользователей, после закрытия окна, например, Изменения приняты, то нам на страницу которая вызывала модальное окно, нужно добавить javaScript:
function onDialogClose(dialogResult, returnValue) {
if(returnValue == 1)
{
        var notifyId;
            notifyId = SP.UI.Notify.addNotification("Изменения приняты", false);
}
    }
и в options добавить: dialogReturnValueCallback: onDialogClose, теперь функция открытия модального окна выглядет:
function openEditWindow(idRequisition)
    {
         var options = {
             url: '/_layouts/requisition/editRequisition.aspx?id_=' + idRequisition,
             dialogReturnValueCallback: onDialogClose,
                       };
        SP.UI.ModalDialog.showModalDialog(options);
     }
После закрытия модально окна, пользователь увидит, в правом верхнем углу сообщение:





5. По умолчанию заголовок у application page -

, чтобы можно было его динамически менять в метод Page_Load можно добавить следующий код:

string par = Request.QueryString["id_"];
LiteralControl Lc = new LiteralControl("Заявка № " + par);
Master.FindControl("PlaceHolderPageTitle").Controls.Add(Lc);

Теперь:

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

Отправить комментарий