通过 SharePoint 中的 javascript/SP 服务根据用户组成员身份在列表视图中隐藏项目行(整行)

Posted

技术标签:

【中文标题】通过 SharePoint 中的 javascript/SP 服务根据用户组成员身份在列表视图中隐藏项目行(整行)【英文标题】:Hide item rows(whole row) in list view based on user group membership through javascript/SP services in SharePoint 【发布时间】:2020-06-25 09:17:45 【问题描述】:

如何根据用户的组成员身份(或列值)隐藏完整的项目行。我有这个列表视图:

我想根据部门组中的用户成员身份隐藏完整的项目行(SharePoint 组包含不同部门的用户 Legal、Project Mngmt 等)。这样每个离职员工只能查看他们的条目。我不想在列表视图 webpart 上使用目标受众。

我已使用此代码隐藏表单中的字段,但如何将其用于列表视图中的整个项目行?

$(document).ready(function() 
  $().SPServices(
    operation: "GetGroupCollectionFromUser",
    userLoginName: $().SPServices.SPGetCurrentUser(),
    async: false,
       completefunc: function (xData, Status) 
       var flag = ($(xData.responseXML).find("Group[Name='LegalDepartment']").length == 1);
       if (!flag)
        
            //To Hide Column Header
            $("nobr:contains('User ID')").closest('tr').hide();
        
       
    )
)

如何通过 SP services/javascript 实现?

【问题讨论】:

您可以使用项目级权限来隐藏行 @MuhammadObaidullahAther 我不想使用项目级别权限。我只需要根据单列值“隐藏”整行。我该怎么做,我在哪里可以得到相关的 <tr> 引用它,以便我可以将它隐藏在我的 javascript 代码中 【参考方案1】:

到目前为止,我已经了解您的要求,可以有两种方法: 第一种方法是设置项目级权限。这可以使用 REST API 和 JSOM 来实现。请查看here

第二种方法是获取当前用户组成员资格以获取该用户所属的组(请查看here 获取JSOM 代码)。获取组后,可以将这些与所需的列匹配,例如DepartmentAssigned to 和列表视图 DOM 可以相应地操作以显示/隐藏每一行。

我更喜欢第一种方法,因为它严格遵循 SharePoint 安全原则来删除用户对特定项目的权限。其次,方法感觉不安全,好像用户设法使用浏览器工具或其他工具显示分配给其他部门(他不是其成员)的行,他仍然可以根据他对整个列表/库的权限编辑该行。 您可能需要创建 SharePoint 工作流,以根据项目创建事件的所需列设置项目级别权限。详情请查看this。 希望这会有所帮助。

【讨论】:

您可以使用JS链接并根据特定列的值显示/隐藏一行,并使用自定义代码获取当前用户组。

以上是关于通过 SharePoint 中的 javascript/SP 服务根据用户组成员身份在列表视图中隐藏项目行(整行)的主要内容,如果未能解决你的问题,请参考以下文章

powershell 这通过PowerShell计算SharePoint中的各种项目

无法通过 Microsoft Graph 更新 SharePoint 中的超链接或图片

通过 SharePoint 中的 javascript/SP 服务根据用户组成员身份在列表视图中隐藏项目行(整行)

哪位大神可以具体,详细,通俗的给我讲一下 sharepoint是干啥用的

SharePoint Server 2019 中的日历列表视图

如何通过flow修正SharePoint Online时差问题