Sharepoint 2007/2010隐藏列表或库项目(即行)

时间:2011-10-13 22:43:34

标签: sharepoint sharepoint-2010 sharepoint-2007 sharepoint-designer sharepoint-api

我想知道是否有办法根据特定列的内容隐藏列表或库行项。

以下是一个用例场景:

我有一个列表或任何类型的库,我有一个名为 Permissions 的列,在该列中我可以指定两个组名称类型中的一个作为字符串,例如“Owners”或“Visitors” 。后记,我有条件遍历列表或库中的每个单独的行项目,并将该行项目的可见性基于权限列的字符串内容。

行可见性逻辑伪:

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

是否可以通过Sharepoint Web界面或在Sharepoint Designer或Visual Studio中以程序化方式完成此操作?洞察力表示赞赏。

更新:

感谢大家的反馈,只是为了澄清这一点的动机是我们的文档结构和安全/权限层非常动态,所以我们无法在SharePoint中创建静态层次结构。相反,我们希望拥有一个基于当前登录用户的组成员资格即时过滤的资源库。我们希望将权限列内容视为元数据,以描述谁可以查看此行的数据。

我很抱歉,但我忽略的另一个要求是,当登录用户尝试在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 个答案:

答案 0 :(得分:2)

此处的解决方案取决于您的行动的属性。如果访问者访问标记为“所有者”的项目时没有业务影响,您可以进行过滤。当你可以使用Sharepoint的“观众”功能时就是这种情况,因为Nat在他的回答中提出了建议。但请记住,访问者可以在不同的视图中打开您的列表(例如,在Excel的Excel中),并查看列表中的所有项目。

但是,如果标记为“所有者”的行只能由系统所有者查看,则必须考虑实际为列表项分配权限。我有两种方式可以想到:

  • 分隔两个文件夹中的项目,为文件夹分配不同的权限。然后使用递归视图列出单个列表中的所有项目
  • 使用项目级别权限。如果选择此路径,则必须编写异步事件处理程序(在ItemUpdated上)以检查“权限”字段的值并设置适当的权限。

答案 1 :(得分:0)

您无法使用“audience”功能吗?

答案 2 :(得分:0)

您可以在列表中创建新视图,您可以在其中应用列的过滤器。 在您的情况下,创建两个视图 - 一个用于“所有者”,另一个用于“访问者” 例如:当“权限”等于“作者”

时显示项目

但是,此解决方案不会限制“访问者”组成员查看“所有者”组成员的视图。如果需要,请应用项目级安全性。