因此,我从sharepoint 2007公告列表中获取数据,并将其显示在另一个站点上。我需要确保没有为没有我从中获取数据的站点的权限的人显示我创建的Web部件。如果用户没有权限,如何“禁用”Web部件?
我在onload()事件中尝试过this.enabled = false,虽然没有用。
答案 0 :(得分:1)
protected override void Render(HtmlTextWriter output) {
if (i have permissions) {
base.Render(output);
}
}
为了避免UnauthorizedAccessException(s),请务必检查用户是否在您访问任何网站,列表和数据的任何其他位置具有适当的权限。
答案 1 :(得分:0)
我不确定“禁用”Web部件是什么意思。如果当前用户无权查看“通知”列表,则您的部分无法呈现任何标记。
答案 2 :(得分:0)
要完全隐藏Web部件,请将Web部件的Hidden
属性设置为true。我们遵循这种方法,根据用户个人资料中是否存在某些属性来隐藏Web部件。
隐藏的Web部件仍然在页面上,并参与页面生命周期,但用户看不到它。如果您仍然遇到权限错误问题,请尝试捕获特定异常并将其用作是否隐藏该部分的测试。
当然,有更优雅的方法来检查权限,但这种方法应该快速而简单。
答案 3 :(得分:0)
在SharePoint 2013中。在其他版本中,相应地更新ID和文本。 您可以使用这个简单的jQuery代码为没有权限的用户隐藏Web部件:
$( "td:contains('There are no documents in this view.')" ).parentsUntil( ".ms-webpartzone-cell" ).hide();
例如,我在页面上有一个列表视图Web部件。列表上应用的权限。如果用户没有权限,则Web部件显示消息:
此视图中没有文档。
现在,我在所有Web部件的顶部放置了一个脚本编辑器Web部件,并插入了此脚本:
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script>
$(document).ready(function(){
$( "td:contains('There are no documents in this view.')" ).parentsUntil( ".ms-webpartzone-cell" ).hide();
});
</script>