SharePoint SPContext.List на пользовательской странице приложения - PullRequest
1 голос
/ 27 августа 2008

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

Ожидается ли это?

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

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

Ответы [ 4 ]

2 голосов
/ 27 августа 2008

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

Глядя на то, как SharePoint работает со страницами ListItems и Layouts (например, «Управление разрешениями» для элемента списка), я вижу, что они передают некоторые переменные через строки запросов: ? OBJ = {76113B3A-ФАБ-4389-BC85-4BB2CC5AB423}, 6, ListItem & Список = {76113B3A-ФАБ-4389-BC85-4BB2CC5AB423}

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

2 голосов
/ 27 августа 2008

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

Я создал решение, которое также нуждалось в собственной настраиваемой «новой» форме, к сожалению, не с открытым исходным кодом, хотя, если вы заинтересованы, вы можете скачать ее, она называется «Метки с ссылками» (Социальные закладки для SharePoint), и вы можете найти ссылки в моем блоге.

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

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

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

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

0 голосов
/ 27 августа 2008

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

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

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

0 голосов
/ 27 августа 2008

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

...