none
Добавление элемента в связанный список SharePoint 2013 с автоматической привязкой к родительскому элементу RRS feed

  • Вопрос

  • Подскажите, пожалуйста, решение для: "Добавление элемента в связанный список SharePoint 2013 с автоматической привязкой к родительскому элементу". Другими словами, на форме добавления или редактирования элемента родительского списка должна быть кнопка для добавления элементов дочернего списка, в котором лукап-поле уже заполнено.
    18 сентября 2013 г. 12:18

Ответы

  • Решение подобной проблемы сводиться к добавлению своей кнопки на форму просмотра элемента.

    Кнопка должна передавать ID элемента на форму создания.

    Например если есть необходимость создать задачу по проекту, то форма создания задачи должна открываться по адресу

    /tasklist/newform.aspx?projID=1.

    На форме создания этот параметр надо обработать. И соответственно выбрать на форме проект с ID=1.

    У меня для подстановки поля используется примерно такой код (подключение jquery обязательно):

    <script>
      $(document).ready(function(){
    var qs = location.search.substring(1, location.search.length);
    var args = qs.split("=");
    var val = args[1].split("&")[0];
    var browser = navigator.appName;
    if(browser == "Microsoft Internet Explorer")
    {
    
            choicesText = $("input[Title='Название поля подстановки']").attr("choices");
            var text="";
            choices = choicesText.split("|");
            for (i = 1; i < choices.length; i = i + 2) {
                if (choices[i] == val) {
                    text = choices[i - 1];
                }
            }
            
            hiddenInput = $("input[title='Название поля подстановки']").attr("optHid");
            $("input[id='" + hiddenInput +"']").attr("value",val)
            
            $("input[Title='Название поля подстановки']").val(text);      
            }
    else
    {
    var lookupField=$("[Title='Название поля подстановки'] [value='"+val+"']");
    $(lookupField).attr("selected", "selected");
    }
    });
    </script>

    Сама кнопка (на форме просмотра родительского элемента) выглядит вот так:

    var qs = location.search.substring(1, location.search.length);
    var args = qs.split("=");
    var val = args[1].split("&")[0];
    var options =
            {
                url: '/Lists/taskList/NewForm.aspx?lookupID='+val
    };
    
    </script>
    <input type="button" onclick="javascript:SP.UI.ModalDialog.showModalDialog(options)" value="Создать новый элемент"></input >





    23 сентября 2013 г. 7:36

Все ответы

  • Добрый день!

    к сожалению по 2013 с ходу не скажу, но по 2010 Master Detail in Sharepoint 

    или Отображение на форме связанных списков (метериал похож)


    19 сентября 2013 г. 12:48
    Модератор
  • Если я вас правильно понял, то вы хотите открыть форму просмотра какого-то элемента. На этой форме нажать на кнопку и создать новый элемент в другом списке. Где на форме создания сразу будет заполнено lookup-поле. Я так понял?

    19 сентября 2013 г. 14:28
  • Если я вас правильно понял, то вы хотите открыть форму просмотра какого-то элемента. На этой форме нажать на кнопку и создать новый элемент в другом списке. Где на форме создания сразу будет заполнено lookup-поле. Я так понял?


    Да, в общем правильно
    20 сентября 2013 г. 11:17
  • Добрый день!

    к сожалению по 2013 с ходу не скажу, но по 2010 Master Detail in Sharepoint 

    или Отображение на форме связанных списков (метериал похож)



    В 2013-м такое решение не работает!
    20 сентября 2013 г. 11:28
  • Решение подобной проблемы сводиться к добавлению своей кнопки на форму просмотра элемента.

    Кнопка должна передавать ID элемента на форму создания.

    Например если есть необходимость создать задачу по проекту, то форма создания задачи должна открываться по адресу

    /tasklist/newform.aspx?projID=1.

    На форме создания этот параметр надо обработать. И соответственно выбрать на форме проект с ID=1.

    У меня для подстановки поля используется примерно такой код (подключение jquery обязательно):

    <script>
      $(document).ready(function(){
    var qs = location.search.substring(1, location.search.length);
    var args = qs.split("=");
    var val = args[1].split("&")[0];
    var browser = navigator.appName;
    if(browser == "Microsoft Internet Explorer")
    {
    
            choicesText = $("input[Title='Название поля подстановки']").attr("choices");
            var text="";
            choices = choicesText.split("|");
            for (i = 1; i < choices.length; i = i + 2) {
                if (choices[i] == val) {
                    text = choices[i - 1];
                }
            }
            
            hiddenInput = $("input[title='Название поля подстановки']").attr("optHid");
            $("input[id='" + hiddenInput +"']").attr("value",val)
            
            $("input[Title='Название поля подстановки']").val(text);      
            }
    else
    {
    var lookupField=$("[Title='Название поля подстановки'] [value='"+val+"']");
    $(lookupField).attr("selected", "selected");
    }
    });
    </script>

    Сама кнопка (на форме просмотра родительского элемента) выглядит вот так:

    var qs = location.search.substring(1, location.search.length);
    var args = qs.split("=");
    var val = args[1].split("&")[0];
    var options =
            {
                url: '/Lists/taskList/NewForm.aspx?lookupID='+val
    };
    
    </script>
    <input type="button" onclick="javascript:SP.UI.ModalDialog.showModalDialog(options)" value="Создать новый элемент"></input >





    23 сентября 2013 г. 7:36