Сведения о вопросе

Pytdev

15:31, 8th August, 2020

Теги

SharePoint SPContext.List на странице пользовательского приложения

Просмотров: 551   Ответов: 4

У меня есть пользовательская страница приложения SharePoint, развернутая в папке _layouts. Это пользовательский "new form" для пользовательского типа контента. Во время моих взаимодействий с этой страницей мне нужно будет добавить элемент в свой список. Когда страница загружается впервые, я могу использовать SPContext.Current.List, чтобы увидеть текущий список, с которым я работаю. Но после того, как я заполняю свою форму, и форма отправляет обратно на себя, и IsPostBack-это правда, тогда SPContext.Current.List-это null, поэтому я не могу найти список, в который мне нужно добавить мои вещи.

Это ожидается?

Как я должен сохранить некоторую информацию о моем списке контекста через обратную передачу? Должен ли я просто заполнить некоторый элемент управления asp:hidden идентификатором guid моего списка, а затем просто вытащить его из этого на обратной передаче? Это кажется безопасным, я думаю.

FWIW, это стандартная версия MOSS 2007.



  Сведения об ответе

#hash

19:08, 17th August, 2020

Вообще говоря, я стараюсь копировать любой подход, который использует группа продуктов, когда хочет добавить свою собственную функциональность. В этом случае они добавляют свои собственные страницы edit/view/add через само определение списка.

Я построил решение, которое также нуждалось в своей собственной пользовательской форме "New", но, к сожалению, не с открытым исходным кодом, хотя если вам интересно, вы можете скачать его, он называется "Tagged Links" (социальная закладка для SharePoint), и вы можете найти некоторые ссылки в моем блоге.

Чтобы дать вам несколько советов и подсказок, следующие должны настроить вас в правильном направлении:

  1. Создал новое определение списка.
  2. Создание нового типа контента в типе контента можно определить свой собственный "FormTemplates", который ссылается на шаблон визуализации, определяющий, что будет отображаться в бите "Middle" этих форм.
  3. Скопировал стандартный шаблон рендеринга, но затем внес в него изменения, которые я необходимый.
  4. Завернул все это в раствор и развернул.

Мой шаблон рендеринга на самом деле включал переопределенную кнопку "Save", где я сделал много дополнительной работы, которую мне нужно было сделать во время сохранения.

В любом случае, на мой взгляд, это немного слишком много работы, но, я думаю, она наиболее точно соответствует стандартному подходу, принятому разработчиками продукта. Дайте мне знать, если вам нужно больше деталей, и я посмотрю, смогу ли я собрать сообщение в блоге step-by-step, но, надеюсь, это поможет вам сориентироваться в правильном направлении.


  Сведения об ответе

SSESION

06:52, 5th August, 2020

Я был бы удивлен, если бы вы могли сделать что-то в файле _Layouts, что вы не можете сделать в шаблоне форм. В вашем распоряжении практически те же самые технологии.

Глядя на то, как SharePoint работает с ListItems и макетами страниц (например, "Manage Permissions" в элементе списка), я вижу, что они передают некоторые переменные через querystrings: ?obj={76113B3A-FABA-4389-BC85-4BB2CC5AB423},6,LISTITEM&List={76113B3A-FABA-4389-BC85-4BB2CC5AB423}

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


  Сведения об ответе

прога

21:06, 1st October, 2020

Я не использую обычную "новую форму", поэтому это может не применяться. Я добавил приемник событий в свой пользовательский тип контента,а затем сделал свой пользовательский код в событиях ItemAdded или ItemAdding. Этот код срабатывает при добавлении события в список. Вы можете использовать свойства приемника событий, чтобы получить доступ к родительскому списку, веб-сайту и сайту.


  Сведения об ответе

DO__IT

12:47, 28th August, 2020

Я хотел бы думать, что моя проблема здесь "special", так как я использую пользовательскую форму. Я решил использовать пользовательскую форму, а не пользовательский FormTemplate просто потому, что я делаю много вещей, которые не очень похожи на список SharePoint (делая ajax вызов для получения информации из стороннего приложения, затем генерируя некоторые динамические элементы формы на основе этого результата ajax, а затем последующую обработку этих данных при обратной передаче). Я подумал, что было бы кошмаром попробовать это в обычном механизме пользовательского шаблона рендеринга.

Я также не думаю, что смогу предоставить объявления пользовательских форм в самом определении списка, потому что у меня есть несколько типов контента, связанных с этим списком, и каждый тип контента имеет свою собственную пользовательскую форму (другой тип, К счастью, намного проще).

На самом деле, мой простой способ сохранения guid списка в моем скрытом поле был очень слабым способом решения этой конкретной проблемы. Моя главная проблема заключается в том, что я не уверен, почему SPContext просто теряет всю свою полезность, когда я возвращаюсь сюда, что заставляет меня думать, что я делаю что-то неправильно.


Ответить на вопрос

Чтобы ответить на вопрос вам нужно войти в систему или зарегистрироваться