2009-09-09 12 views
3

У меня есть список, в котором есть столбец пользователя/группы, который я хочу фильтровать (имя столбца: USERS). Как получить только элементы в списке, где текущий пользователь существует в столбце USERS?Как фильтровать элементы списка по столбцу пользователя/группы в sharepoint?

+0

Вы имеете в виду, используя запрос caml или имеете значение через индивидуальный подход? –

+0

в любом случае это возможно ... – kisin

ответ

1

Если это просто индивидуальный вид, посмотрите на список задач и представление «Мои позиции» для справки.

Вы должны иметь возможность перейти в раздел «Фильтр» в представлении и иметь фильтр, «равный» «[Me]». Тем не менее, похоже, что это многозначное поле, поэтому, возможно, вам удастся «содержать» «[Me]».

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

+0

Я попытался создать представление и фильтрацию с помощью «[Me]», но это полезно только пользователям, а не группам. и у меня есть группы пользователей и группы. – kisin

+3

Я считаю, что это неправильно. SharePoint 2007 не позволит вам использовать оператор contains в столбце Person или Group, даже если включен множественный выбор. – RossFabricant

1
if (item["users"] != null) 
{ 
    //get USERS field for item 
    SPFieldUserValueCollection fieldUserValueCollection = new SPFieldUserValueCollection(web, item["users"].ToString()); 

    //go over the users/groups collection 
    foreach (SPFieldUserValue fieldUserValue in fieldUserValueCollection) 
    { 
     if (fieldUserValue.User == null) //group 
     { 
      if (web.SiteGroups.GetByID(fieldUserValue.LookupId).ContainsCurrentUser) 
      { 
       bolItemGood = true; 
       break; 
      } 
     } 
     else //user 
     { 
      if (fieldUserValue.User.IsDomainGroup) //domain group 
      { 
       if (web.IsCurrentUserMemberOfGroup(fieldUserValue.LookupId)) 
       { 
        bolItemGood = true; 
        break; 
       } 
      } 
      else //sp user 
      { 
       if (fieldUserValue.User.LoginName == Context.User.Identity.Name) 
       { 
        bolItemGood = true; 
        break; 
       } 
      } 
     } 
    } 
} 
+0

где «элемент» пришел из –

Смежные вопросы