日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

通过代码解决SharePoint列表视图权限分配问题

發布時間:2025/3/15 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 通过代码解决SharePoint列表视图权限分配问题 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

最近被SharePoint列表視圖分權限的問題困擾著,在網上搜到些解決方案,比較不錯的是Bewise.SharePoint.SPViewPermissionSetting的解決方案,但是在修改視圖權限配置的時候經常出問題,不知道是什么原因,后來從codeplex上找到了這個解決方案的源碼,下來學習一下,總結如下:

它是通過自定義WebControl來修改ListViewWebPart的ViewSelector模板實現視圖權限過濾的。

開工:

第一步、

先建個ListViewPermissionConfig列表,用來存放視圖權限的配置信息。

列表欄:ListName(單行文本)、ViewName(單行文本)、ViewGuid(單行文本)、Permission(人員或用戶組,允許多選)。

第二步、

開寫代碼,示意代碼如下:

?

?1using?System;
?2using?System.Collections.Generic;
?3using?System.Text;
?4using?System.Web.UI;
?5
?6using?Microsoft.SharePoint;
?7using?Microsoft.SharePoint.WebControls;
?8
?9namespace?ITS.SharePoint.WebControls
10{
11????public?class?CustomerViewMenu?:?ViewSelectorMenu
12????{
13????????/**////?<summary>
14????????///?用戶是否可以查看此時圖
15????????///?</summary>
16????????///?<param?name="viewID"></param>
17????????///?<param?name="userOrGroup"></param>
18????????///?<returns></returns>

19????????private?bool?CanSeeView(Guid?viewID,?SPUser?currentUser)
20????????{
21????????????bool?b?=?false;
22????????????using?(SPSite?site?=?new?SPSite("http://liust-server:100"))
23????????????{
24????????????????using?(SPWeb?icmWeb?=?site.AllWebs["ITSImportanceCustomerManagement"])
25????????????????{
26????????????????????SPList?listViewConfig?=?icmWeb.Lists["ListViewPermissionConfig"];
27????????????????????string?strQuery?=?string.Format("<Where><Eq><FieldRef?Name='ViewGuid'?/><Value?Type='Text'>{0}</Value></Eq></Where>",?viewID.ToString());
28????????????????????SPQuery?query?=?new?SPQuery();
29????????????????????query.Query?=?strQuery;
30
31????????????????????SPListItemCollection?items?=?listViewConfig.GetItems(query);
32????????????????????if?(items.Count?>?0)
33????????????????????{
34????????????????????????foreach?(SPListItem?item?in?items)
35????????????????????????{
36????????????????????????????object?obj?=?item["Permission"];
37????????????????????????????SPFieldUserValueCollection?userValues?=?(SPFieldUserValueCollection)obj;
38????????????????????????????foreach?(SPFieldUserValue?value?in?userValues)
39????????????????????????????{
40????????????????????????????????//如果value.User非空,則代表當前值是用戶,相反則是用戶組。
41????????????????????????????????if?(value.User?!=?null)
42????????????????????????????????{
43????????????????????????????????????if?(currentUser.LoginName.Equals(value.User.LoginName))
44????????????????????????????????????????return?true;
45????????????????????????????????}

46????????????????????????????????else
47????????????????????????????????{
48????????????????????????????????????//判斷當前用戶是否在用戶組中
49????????????????????????????????????SPGroup?group?=?icmWeb.Groups.GetByID(value.LookupId);
50????????????????????????????????????foreach(SPUser?user?in?group.Users)
51????????????????????????????????????{
52????????????????????????????????????????if?(currentUser.LoginName.Equals(user.LoginName))
53????????????????????????????????????????????return?true;
54????????????????????????????????????}

55????????????????????????????????}

56????????????????????????????}

57????????????????????????}

58????????????????????}

59????????????????}

60????????????}

61????????????return?false;
62????????}

63
64????????protected?override?void?Render(HtmlTextWriter?output)
65????????{
66????????????if?(this.Visible?&&?!SPContext.Current.Web.CurrentUser.IsSiteAdmin)
67????????????{
68????????????????foreach?(Control?item?in?base.MenuTemplateControl.Controls)
69????????????????{
70????????????????????try
71????????????????????{
72????????????????????????if?((item?is?MenuItemTemplate)?&&?(SPContext.Current.List.Views[((MenuItemTemplate)item).Text])?!=?null)
73????????????????????????{
74????????????????????????????SPView?tempView?=?SPContext.Current.List.Views[((MenuItemTemplate)item).Text];
75????????????????????????????if?(tempView.DefaultView)
76????????????????????????????????item.Visible?=?true;
77????????????????????????????else
78????????????????????????????????item.Visible?=?this.CanSeeView(tempView.ID,?SPContext.Current.Web.CurrentUser);
79????????????????????????}

80????????????????????}

81????????????????????catch?(Exception)?{?}
82????????????????}

83????????????????base.Render(output);
84????????????}

85????????????else
86????????????{
87????????????????base.Render(output);
88????????????}

89????????}

90????}

91}

92

?

編譯完成后部署到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兩項必須填寫,列表默認視圖無論是否配置權限都會顯示。

最終配置完的效果如下圖:

?

轉載于:https://www.cnblogs.com/Nirvanalst/archive/2009/07/07/1518023.html

總結

以上是生活随笔為你收集整理的通过代码解决SharePoint列表视图权限分配问题的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。