none
Столбец подстановки для выбора документа из библиотеки RRS feed

  • Вопрос

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

    На сайте SharePoint 2010 есть библиотека документов "DocLib" и список "MyList". В этом списке нужно создать столбец "DocLink", который в представлении списка отображал бы ссылку на документ, выбранный в библиотеке "DocLib". В представлении библиотеки эту ссылку отображает столбец "Имя", но он не доступен при создании столбца подстановки, ссылающегося на библиотеку, а принудительная подстановка внутреннего имени столбца "Имя" в свойство LookupField столбца подстановки вызывает ошибку при открытии списка MyList.

    Если значения столбца "Имя" переписать в столбец библиотеки "Название", доступный для столбца подстановки "DocLib", то ссылка, отображаемая этим столбцом, открывает не документ, а его форму просмотра DispForm. Как в этом столбце представления списка создать ссылку, открывающую сам документ библиотеки?


    2 июня 2016 г. 11:42

Ответы

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

    если нужен именно ВЫБОР документа из формы, то свой FieldControl делать придется. Если выбор не нужен, то можно заполнять поля в ресиверах. Хотя можно еще попробовать сделать LookUp поле или заполнять его через JSOM, все зависит от ваших навыков в jQuery/JSOM/REST.

    • Помечено в качестве ответа Григорич 9 июня 2016 г. 4:18
    8 июня 2016 г. 12:40
  • Добрый день

    если нужно только в представлении сделать ссылку на документ, при этом данные уже необходимые есть, то я бы пошел по пути CSR + REST. Т.е. переопределяем шаблон рендера обычного поля и при этом собираем все id в представлении. потом делаем запрос к списку, получаем ссылки на файлы и добавляем полученные ссылки в представление.

    понятно, что решение может показаться сложным но:

    1. не нужно изобретать велосипед с кастомным полем (у него будут ограничения к примеру в офисных приложениях)

    2. создание дополнительного поля ссылки? зачем дублировать данные и еще потом средствами ресивера или РП заполнять?

    тут уже вам решать как строить решение

    еще из плюсов, у вас будет всегда актуальная ссылка в представлении. Т.к. имя файла могут поменять при этом ссылка в поле может потерять актуальность.

    из минусов, увеличится нагрузка при выводе данных, т.к. будут доп запросы к серверу


    мой блог Немного о SharePoint




    8 июня 2016 г. 14:47
    Модератор

Все ответы

  • Создаем в списке новый столбец типа "ГИПЕРССЫЛКА".

    В текстовом поле "Наименование" - имя документа, в новом столбце - ссылка на документ в библиотеке ....

    Примечание: у меня SPS2013. Но в 201 насколько я помню, тоже самое.

    • Помечено в качестве ответа Григорич 3 июня 2016 г. 5:21
    • Снята пометка об ответе Григорич 8 июня 2016 г. 12:30
    2 июня 2016 г. 12:51
  • Создаем в списке новый столбец типа "ГИПЕРССЫЛКА".

    Спасибо за подсказку! Этот столбец ведь можно заполнять в обработчиках ItemAdding и ItemUpdating списка "MyList", используя данные из столбца подстановки. В частности, узнав ID элемента библиотеки можно определить Url самого документа.
  • А можно еще проще, использовать служебное поле ВЛОЖЕНИЕ элемента списка для хранения вложенных файлов.
    • Предложено в качестве ответа antsv 3 июня 2016 г. 12:04
    • Отменено предложение в качестве ответа Григорич 8 июня 2016 г. 11:40
    3 июня 2016 г. 12:04
  • А можно еще проще, использовать служебное поле ВЛОЖЕНИЕ элемента списка для хранения вложенных файлов.
    Этот способ не пойдет, так-как в списке нужны ссылки именно на документы, уже хранящиеся в библиотеке. Создание в списке нового столбца типа гиперссылка и заполнение его в обработчиках событий теоретически должно сработать, но как-то это уж слишком громоздко. Похоже, традиционным подходом для SharePoint в этом случае является создание пользовательского типа поля со своим FieldControl и RenderingTemplate. Или может есть более простой способ? Открытие выбранного документа из его формы просмотра уже реализовано, но это не устраивает заказчика - нужно по прямой ссылке.
    8 июня 2016 г. 12:28
  • Добрый день,

    если нужен именно ВЫБОР документа из формы, то свой FieldControl делать придется. Если выбор не нужен, то можно заполнять поля в ресиверах. Хотя можно еще попробовать сделать LookUp поле или заполнять его через JSOM, все зависит от ваших навыков в jQuery/JSOM/REST.

    • Помечено в качестве ответа Григорич 9 июня 2016 г. 4:18
    8 июня 2016 г. 12:40
  • Выбор документа нужно делать в NewForm и EditForm списка в столбце подстановки, но в представлении списка этот столбец должен отображать ссылку на документ, а не на элемент библиотеки. Что в єтом случае лучше: свой FieldControl или ресиверы? В jQuery/JSOM/REST я не силен.

    8 июня 2016 г. 12:55
  • Добрый день

    если нужно только в представлении сделать ссылку на документ, при этом данные уже необходимые есть, то я бы пошел по пути CSR + REST. Т.е. переопределяем шаблон рендера обычного поля и при этом собираем все id в представлении. потом делаем запрос к списку, получаем ссылки на файлы и добавляем полученные ссылки в представление.

    понятно, что решение может показаться сложным но:

    1. не нужно изобретать велосипед с кастомным полем (у него будут ограничения к примеру в офисных приложениях)

    2. создание дополнительного поля ссылки? зачем дублировать данные и еще потом средствами ресивера или РП заполнять?

    тут уже вам решать как строить решение

    еще из плюсов, у вас будет всегда актуальная ссылка в представлении. Т.к. имя файла могут поменять при этом ссылка в поле может потерять актуальность.

    из минусов, увеличится нагрузка при выводе данных, т.к. будут доп запросы к серверу


    мой блог Немного о SharePoint




    8 июня 2016 г. 14:47
    Модератор
  • Спасибо всем за "дорожную карту".