0

我在我的应用程序中使用 WSS 3.0。我将列表显示为 DataView Webpart。我的目标是让这个 webpart 对选定的一组人可见。由于 WSS 3.0 中没有 Target Audience 选项,因此我编辑了 List Permissions 并仅将读取权限授予选定用户。这不会从页面中隐藏 Web 部件,而是向其他用户显示拒绝访问消息。

拒绝访问。您无权执行此操作或访问此资源。

正如我所说,我想隐藏这个 web 部件,因为它在网页上对其他无权查看它的用户不可见。由于此消息只会显示给那些没有权限的用户!,我的做法是在html中搜索上述消息并识别并隐藏父节点,从而隐藏webpart。

我不太确定该怎么做。有任何想法吗?提前致谢!

4

2 回答 2

0

我将假设您处于可以向页面添加其他 Web 部件而不是尝试将 JavaScript 直接添加到 DataView Web 部件的情况。如果设计师添加此列表的另一个视图,我的建议将不会在单独的页面上起作用。

将空白 .js 文件上传到您的站点资产。将内容编辑器 Web 部件添加到您的页面,将其指向该文件。从提供者添加 JQuery或自己托管,在文件中添加参考。从那里,您有 3 个工作方向:首先,使用 Internet Explorer 的 F12 开发人员工具探索 Web 部件,特别注意具有良好唯一 id、名称或类的 div 和表,如果隐藏它们可以解决您的问题。还要注意 div 或表格或单元格的 id 或任何包含拒绝访问文本的内容。其次,(假设您是 JQuery 新手)做一些 JQuery 教程,然后开始选择上述项目,例如,更改它们的背景颜色。一旦你拥有了这两个,你就完成了 90%:(尝试)选择包含拒绝访问文本的对象,如果 innerHTML 存在并且等于该字符串,则为 div 或表设置 display:none隐藏您的 Web 部件。

很抱歉我不能给你具体的代码,因为我无法测试它。如果情况发生变化,我会尝试给出更详细的回复。

旧的,误导的答案:这里的任何一个答案都适合你吗?或者,这个答案有一些很好的资源来解决你的问题。只需将消息更改为空字符串即可。

于 2013-10-15T19:01:44.773 回答
0

谢谢阿伦:D

我找到了 webpart 的 id 并对其进行了硬编码。它提供了解决方案,但我希望通过搜索 innerhtml 以编程方式获取 id,因为我有多个必须隐藏的 Web 部件。

我在这里找到了部分解决方案: Hide SharePoint web part using javascript onclick method

我在页面上放了一个 CEWP 并在其中添加了以下脚本:

<script>
function hide()
{
    var content = document.getElementById("webpartID").innerHTML;
    var n = content.search("Access denied. You do not have permission to perform this action or access this resource");
    if(n!=-1)
    {       document.getElementById("webpartID").style.display="none";
    }
}
_spbodyonloadfunctionnames.push("hide");
</script>

就我而言,我从 aspx 页面或查看该页面的源代码中获取了 webpart id。

于 2013-10-17T01:55:51.407 回答