среда, 21 октября 2015 г.

Создание элемента в связном списке (part 1)

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


И так что имеем:
Список «Requests» и список «Tasks»
Нам нужно сделать что бы из элемента Request можно создавать Task
Создаем в списке «Tasks» поле lookup на список «Requests»




Далее идем в список «Requests» открываем элемент и на форму присмотра (DispForm.aspx)
добавляем веб-часть списка «Tasks». Перетянув меняем местами веб-части.




Далее делаем связь между веб-частями передавая фильтр из веб-части «Requests» в «Tasks».



Добавим еще веб-часть «Редактор скриптов» и в него добавим скрип который будет открывать страницу создания нового элемента в диалоговом окне, при этом будет передавать Source который в дальнейшем нам понадобится. При использовании, нужно поменять URL страницы создания элемента Tasks.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
<div>
<button class="btn btn-default" onclick="openInDialog()" type="button">
  <span aria-hidden="true" class="glyphicon glyphicon-plus"></span> Add Task
 </button>
</div>
<script type="text/javascript">
function openInDialog()
{   
 var pageUrl = "/test/Lists/Tasks/NewForm.aspx?&Source=" + document.URL // изменить на адрес страницы требуемого списка
 console.log(pageUrl)
 var needCallbackFunction = true;
    var options = {
     url: pageUrl,
     width: 650,
     height: 650,
     allowMaximize:  true ,
     showClose: true,
     dialogReturnValueCallback : dialogClosed 
      };
    SP.SOD.execute('sp.ui.dialog.js', 'SP.UI.ModalDialog.showModalDialog', options);
};
function dialogClosed(dialogResult, returnValue)
{
  console.log(dialogResult + " " + returnValue)
  location.reload(); 
};
</script>


Еще нужно убрать возможность создавать элемент через стандартную панель веб-части


Закрываем режим редактирования.



 В итоге форма выглядит так

Во второй части статьи я расскажу как получать id текущего элемента и записывать в новый элемент для связи.

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

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