0

我有一个视图,我想在其中隐藏文档(稍后您会看到,导致我的问题的不是文档,而是分类视图)只能由特定角色访问。

我会尽量做到具体,所以如果有不清楚的地方,请随时问我问题。

请注意英语不是我的第一语言;-)

我有 4 种不同类型的文档,3 种(TypeA、TypeB 和 TypeC)对所有人可见,1 种(TypeD)需要特定角色(例如 [RoleD])。

该视图按文档类型分类,并且每个文档上都有安全字段,如果您没有适当的角色,它们会阻止它们被看到。因此,当您查看视图而不是 [RoleD] 的成员时,您会得到以下结果:

TypeA
    Doc1
    Doc2
    Doc3
TypeB
    Doc4
    Doc5
TypeC
    Doc6
    Doc7
TypeD
    {Empty}

我的问题是即使TypeD的所有文档都被隐藏了,我也希望隐藏“类别”。

我在视图选择中尝试了一些条件,仅当用户是角色 [RoleD] 的成员时才选择 TypeD 文档,但使用@If、@IsMember(和@IsNotMember)和@UserRoles 没有任何成功。结果很奇怪,即使我是角色的成员,类别和文档也是隐藏的(?!?!?)。

这是我到目前为止所尝试的:

Try #1
    @If(@IsNotMember("[RoleD]";@UserRoles) ; DocTypeField != "TypeD" ; 1=1)
Try #2
    @IsNotMember("[RoleD]";@UserRoles) & DocTypeField != "TypeD"
    |
    @IsMember("[RoleD]";@UserRoles) & 1=1

我希望它不会太混乱。

感谢您急需的帮助。

4

2 回答 2

2

有一个名为“不显示空类别”的视图属性。你的观点是这样吗?

于 2012-07-12T17:08:30.620 回答
1

肯的​​回答是正确的。不过我想指出两点。

首先,“不要显示空类别”可能会导致用户性能下降。在有大量文档(数以万计)并且个人用户只能访问其中很小一部分的情况下尤其如此。

其次,您不能在视图中可靠地使用 @UserRoles 的原因是,对于常规视图,视图索引不是由客户端构建的。应用选择公式的是服务器上的索引器任务,因此@UserRoles 将返回适用于服务器 ID 的角色。如果您使用由客户端索引的私有视图,则 @UserRoles 将返回您期望的内容。还有比这更多的细节需要考虑,但经验法则是视图选择公式通常不应使用为不同用户返回不同结果或在不同日期/时间返回不同结果的函数。

于 2012-07-12T18:37:32.527 回答