通过 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 代码)。获取组后,可以将这些与所需的列匹配,例如Department
或 Assigned to
和列表视图 DOM 可以相应地操作以显示/隐藏每一行。
我更喜欢第一种方法,因为它严格遵循 SharePoint 安全原则来删除用户对特定项目的权限。其次,方法感觉不安全,好像用户设法使用浏览器工具或其他工具显示分配给其他部门(他不是其成员)的行,他仍然可以根据他对整个列表/库的权限编辑该行。 您可能需要创建 SharePoint 工作流,以根据项目创建事件的所需列设置项目级别权限。详情请查看this。 希望这会有所帮助。
【讨论】:
您可以使用JS链接并根据特定列的值显示/隐藏一行,并使用自定义代码获取当前用户组。以上是关于通过 SharePoint 中的 javascript/SP 服务根据用户组成员身份在列表视图中隐藏项目行(整行)的主要内容,如果未能解决你的问题,请参考以下文章
powershell 这通过PowerShell计算SharePoint中的各种项目
无法通过 Microsoft Graph 更新 SharePoint 中的超链接或图片
通过 SharePoint 中的 javascript/SP 服务根据用户组成员身份在列表视图中隐藏项目行(整行)
哪位大神可以具体,详细,通俗的给我讲一下 sharepoint是干啥用的