我有一个发布到 SharePoint 2013 的信息路径表单,其中用户使用人员选取器只选择一个人。在表单之外,我有列显示名称和帐户 ID。我希望正在查看列表的用户只能看到由他修改、由他创建或是否在表单中选择了的对象。
尝试从基于浏览器的视图创建器限制视图很可能是不可能的,因为外部可用的列都不属于 User
类型。然后,我转到 Sharepoint Designer 2013,并潜入 CAML。这也无济于事。
如果当前登录的用户与表单中选择的用户是同一用户,如何检查?我尝试使用 CAML,但没有效果(在本例中,最后一个FieldRef
是对列的引用。
<Where>
<Or>
<Or>
<Eq>
<FieldRef Name="Editor"/>
<Value Type="Integer">
<UserID Type="Integer"/>
</Value>
</Eq>
<Eq>
<FieldRef Name="Author"/>
<Value Type="Integer">
<UserID Type="Integer"/>
</Value>
</Eq>
</Or>
<Eq>
<FieldRef Name="_638fe3aa_9161_4aa5_8bd1_862678d9fc06"/>
<Value Type="Integer">
<UserID Type="Integer"/>
</Value>
</Eq>
</Or>
</Where>
如果这可以通过 Infopath 中的代码或任何其他方式实现,答案也会被接受 - 我不想要完全基于 CAML 的答案,我想要任何可行的答案来解决我的问题:)
筛选的每个列的简单筛选器应仅显示与自己相等的人员选取器值。
如果表单中的字段是人员选取器,则必须将用户数据存储在列中的某个位置,除非您在使用规则处理数据以更新其他字段后丢弃数据。 如果是这种情况,我不明白为什么你不能将人员选取器数据存储在不显示在视图中的列中。您不必基于您正在主动显示的字段来设置筛选器,它就可以正常工作,并且您已经在使用正确类型的控件来获取所需的数据。
"创建者"和"修改者"列始终是用户值。