Sharepoint 2007/2010 скрывающий список или элементы библиотеки (т.е. строки) - PullRequest
0 голосов
/ 14 октября 2011

Я хотел бы узнать, есть ли способ скрыть элементы строки списка или библиотеки на основе содержимого определенного столбца.

Вот сценарий использования:

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

Псевдо логика видимости строки:

If( current_row.Permissions_Col.Content == LoggedInUser.Group_Name)
 Show this row
Else
 Hide this row

Возможно ли сделать это либо через веб-интерфейс Sharepoint, либо программно в Sharepoint Designer или Visual Studio ?? Проницательность приветствуется.

UPDATE:

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

Приношу свои извинения, но я не упомянул еще одно требование: когда вошедший в систему пользователь пытается загрузить файл или создать новый элемент (например, список, библиотека, папка, форма и т. Д.) В SharePoint, разрешения устанавливаются автоматически для группы пользователей и для «Владельцев». Единственными исключениями из этого условия будут «Владельцы». Таким образом, псевдо-что-то вроде этого:

Логика загрузки файла / создания элемента:

If( (creatingElement OR uploadingFile) AND LoggedInUser.Group_Name != "Owners")
{
  SET Permissions_Col.Content to LoggedInUser.Group_Name; 
  SET read permissions for LoggedInUser.Group_Name and full control for "Owners";
}

Ответы [ 3 ]

2 голосов
/ 14 октября 2011

Решение здесь зависит от цели вашего действия.Если при обращении посетителя к элементу, помеченному как «Владельцы», влияние на бизнес отсутствует, вы можете перейти к фильтрации.Это тот случай, когда вы можете использовать функцию «аудитории» Sharepoint, как советует Нат в своем ответе.Имейте в виду, однако, что Посетитель может открыть ваш список в другом представлении (или в MS Excel, например) и просмотреть все элементы в вашем списке.

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

  • разделить элементы на две папки, назначить разные разрешения для папок.Затем используйте рекурсивное представление для отображения всех элементов в одном списке
  • используйте разрешения на уровне элементов.Если вы выберете этот путь, вам придется написать асинхронный обработчик событий (на ItemUpdated ), чтобы проверить значение поля «permissions» и установить соответствующие разрешения.
0 голосов
/ 14 октября 2011

Вы можете создать новый вид (ы) в списке, где вы можете применить фильтр для столбца (ов). В вашем случае создайте два представления - одно для «Владельцев», а другое для «Посетителей». Например: Показать элементы, когда «Разрешения» равны «Авторы»

Однако это решение не ограничивает членов группы «Посетители» в просмотре членов группы «Владельцы». Если вы хотите, примените защиту на уровне предмета.

0 голосов
/ 14 октября 2011

Вы не можете использовать функцию " аудитория "?

...