2009-09-09 77 views
3

我有一个列表,其中有一个用户/组列要过滤(列名是:USERS)。 如何获取当前用户存在于USERS列的列表中的项目?如何过滤sharepoint中用户/组列的列表项?

+0

您是指通过caml查询或通过自定义视图做的意思? – 2009-09-09 14:13:30

+0

以任何方式它可能... – kisin 2009-09-10 07:00:03

回答

1

如果它只是一个自定义视图,请查看任务列表和我的项目视图以供参考。

你应该能够去视图中的过滤器部分,并有一个“等于”“[我]”的过滤器。但是,这听起来像是一个多值字段,所以也许你可以用“包含”“[我]”离开。

另一个需要考虑的问题是如果你有MOSS,则可以调查观众。内容查询Web部件能够根据受众筛选列表项目。

+0

我试图创建一个视图和筛选通过“[我]”,但它只适用于用户,而不适用于组。我有用户和组混合在一起。 – kisin 2009-09-10 07:02:04

+3

我相信这是错误的。即使启用了选择多项,SharePoint 2007也不会允许您在“个人”或“组”列中使用包含运算符。 – RossFabricant 2010-04-09 18:56:14

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

“item”来自哪里 – 2011-04-17 14:06:17