Как хранить пользовательские данные в SharePoint - PullRequest
10 голосов
/ 03 мая 2010

У меня есть некоторые пользовательские данные, которые нужно хранить в SharePoint и сделать доступными для пользователя через пользовательские веб-части. Допустим, список любимых URL-адресов. Какой самый простой способ хранения этой информации?

  • Некоторые встроенные пакеты свойств для SPUser или аналогичные, о которых я не знаю.
  • SPList, связанный через столбец User.
  • Настраиваемая таблица базы данных, связанная с ID SPUser.
  • В противном случае

Для меня это звучит как RTFM, но я, вероятно, задаю Google неправильные вопросы.

[Обновить]

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

Ответы [ 4 ]

5 голосов
/ 04 мая 2010

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

Список сведений о пользователях - это стандартный список SharePoint, который SharePoint использует для хранения информации о пользователях. Чтобы получить доступ к списку информации о пользователях, вы можете зайти в корневую сеть семейства сайтов и использовать свойство SiteUserInfoList

Е.Г.

SPList userInformationlist = SPContext.Current.Site.RootWeb.SiteUserInfoList;
//Or 
SPWeb web = SPContext.Current.Site.RootWeb;
SPList userInformationlist = web.SiteUserInfoList;

Для доступа к элементу списка пользователей вы можете использовать Идентификатор пользователя, чтобы вернуть ListItem из списка информации о пользователях

Е.Г.

SPListItem currentUserItem = userInformationlist.GetItemById(web.CurrentUser.ID);

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

2 голосов
/ 04 мая 2010

Создайте веб-часть, которая читает / записывает пользовательскую базу данных, и вы сможете гибко использовать веб-часть в SiteCollections, WebApps или даже в отдельных фермах.

Это было реализовано там, где я работаю, и имело большой успех. Нам нужен был способ предоставить нашим конечным пользователям большой выбор важных, часто используемых ссылок. Конечные пользователи имеют возможность отображать ссылки, которые полезны для их конкретной функции работы, и имеют веб-часть, которую можно разместить где угодно, чтобы ссылаться на те ссылки, которые важны для них. У вас также есть возможность для «администратора» зайти в пользовательскую базу данных и обновить любые URL-адреса, которые могут измениться, не влияя на конечного пользователя или не заканчивая битой ссылкой.

2 голосов
/ 04 мая 2010

Я бы выбрал свойства в профилях пользователей. Вы не хотите хранить информацию в корневой сети, поскольку она не является информацией о корневой сети. Ваш пример с любимыми URL, у каждого пользователя есть коллекция «быстрых ссылок» в их профиле. Идеальное место для хранения URL для каждого пользователя. :)

1 голос
/ 03 мая 2010

Это очень хороший вопрос.

Хотя у меня нет идеального ответа, вот несколько вещей, которые вы можете рассмотреть:

  • Хранить данные в файле cookie браузера, если это возможно.

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

...