最近被SharePoint列表视图分权限的问题困扰着,在网上搜到些解决方案,比较不错的是Bewise.SharePoint.SPViewPermissionSetting的解决方案,但是在修改视图权限配置的时候经常出问题,不知道是什么原因,后来从codeplex上找到了这个解决方案的源码,下来学习一下,总结如下:
它是通过自定义WebControl来修改ListViewWebPart的ViewSelector模板实现视图权限过滤的。
开工:
第一步、
先建个ListViewPermissionConfig列表,用来存放视图权限的配置信息。
列表栏:ListName(单行文本)、ViewName(单行文本)、ViewGuid(单行文本)、Permission(人员或用户组,允许多选)。
第二步、
开写代码,示意代码如下:
1
using System;
2
using System.Collections.Generic;
3
using System.Text;
4
using System.Web.UI;
5
6
using Microsoft.SharePoint;
7
using Microsoft.SharePoint.WebControls;
8
9
namespace ITS.SharePoint.WebControls
10
2
3
4
5
6
7
8
9
10
编译完成后部署到GAC中。
第三部、
修改DefaultTemplate.ascx文件,在文件头部加入以下代码:
<%@ Register TagPrefix="ITSControls" Assembly="ITS.SharePoint.WebControls, Version=1.0.0.0, Culture=neutral, PublicKeyToken=f6cfe723df0de6cf" namespace="ITS.SharePoint.WebControls" %>
接着搜索"SharePoint:ViewSelectorMenu",替换成"<ItsControls:CustomerViewMenu",最终改完效果如下:
<ITSControls:CustomerViewMenu MenuAlignment="Right" AlignToParent="true" runat="server" id="ViewSelectorMenu" />
重启IIS后,进入网站,在ListViewPermissionConfig列表中配置一条视图权限信息。
说明:ViewGuid和Permission两项必须填写,列表默认视图无论是否配置权限都会显示。
最终配置完的效果如下图: