我在我的应用程序中使用WSS 3.0。我正在将List显示为DataView Webpart。我的目标是让这个webpart对选定的一组人可见。由于WSS 3.0中没有Target Audience选项,因此我开始编辑List的权限,并仅向所选用户授予读取权限。这不会将Web部件隐藏在页面中,而是向其他用户显示“拒绝访问”消息。
拒绝访问。您无权执行此操作或访问此资源。
正如我所说的,我想隐藏这个webpart,就像在其他没有权限查看它的用户的网页上看不到它一样。由于此消息仅显示给那些没有权限的用户!我的方法是在html中搜索上述消息并识别并隐藏父节点,从而隐藏webpart。
我不太清楚如何做到这一点。有任何想法吗?提前谢谢!
答案 0 :(得分:0)
我将假设您处于可以向页面添加其他Web部件而不是尝试直接将JavaScript添加到DataView Web部件的情况。如果Designer添加了此列表的另一个视图,我的建议将无法在单独的页面上运行。
将空白.js文件上传到您的网站资源。将内容编辑器Web部件添加到页面,将其指向该文件。 Add JQuery from a provider或自己托管,在文件中添加引用。从那里,您有3个方向可以工作:首先,使用Internet Explorer的F12开发人员工具探索Web部件,特别注意具有良好的唯一ID,名称或类的div和表,如果隐藏,将解决您的问题。还要注意div或表格或单元格的id或包含访问被拒绝文本的任何内容。其次,(假设你是JQuery的新手)做一些JQuery教程,然后开始玩选择上面的项目,比如改变他们的背景颜色。一旦你拥有了这两个,你就有90%:(尝试)选择包含访问被拒绝文本的对象,如果innerHTML存在且等于该字符串,则为div或表设置display:none隐藏您的Web部件。您拥有的第三个工具是直接使用SharePoint Designer编辑页面:您可以在任何xsl:template周围抛出一个带有您选择ID的div,这可能有助于您选择JQuery。
对不起,我不能给你具体的代码,因为我无法测试它。如果情况发生变化,我会尝试做出更详细的回复。
旧的,错误的答案:答案here中的任何一个都适合你吗?或者,this回答有一些很好的资源来解决您的问题。只需将邮件更改为空字符串。
答案 1 :(得分:0)
谢谢Aron: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或查看该页面的源代码。