0
如何在網站集內填充網站名稱的下拉列表?已填充網站名稱的sharepoint中的Dropdownlist
如何在網站集內填充網站名稱的下拉列表?已填充網站名稱的sharepoint中的Dropdownlist
以編程方式您是指?
使用SPSite.AllWebs屬性,
獲取包含在網站 集內的所有網站 ,包括頂級 網站及其子的集合。
然而,爲你的用戶,你可能只得到UnauthorizedAccessException(如果你不選擇填充的DropDownList使用提升的權限,但是這取決於你是什麼wan't與下拉做),因爲不是每個人都有權枚舉所有網頁。
在這種情況下,你使用SPWeb.GetSubwebsForCurrentUser方法
返回子網站 當前網站其中 的當前用戶是其成員之下的集合。
但是,這種方法只返回子網beneatath(1層深,即)當前網絡。您將需要遞歸循環,並呼籲GetSubWebsForCurrentUser每個的SPWeb你發現.. ERR
你可以使用SPSecurity.RunWithElevatedPrivileges調用SPSite.AllWebs,那麼你得到的每個的SPWeb,檢查如果用戶需要權限,如果是,則將項目添加到DropDownList。
在代碼中,它看起來是這樣的:
DropDownList ddl = new DropDownList();
SPUser currentUser = SPContext.Current.Web.CurrentUser;
SPSecurity.RunWithElevatedPrivileges(delegate()
{
using (SPSite elevatedSite = new SPSite(SPContext.Current.Site.ID)) //you MUST create new SPSite instance
{
SPWebCollection elevatedWebs = elevatedSite.AllWebs;
foreach (SPWeb elevatedWeb in elevatedWebs)
{
try
{
if (elevatedWeb.DoesUserHavePermissions(currentUser.LoginName, SPBasePermissions.ViewPages))
ddl.Items.Add(new ListItem(elevatedWeb.Title, elevatedWeb.ID.ToString()));
}
finally
{
if (elevatedWeb != null)
elevatedWeb.Dispose();
}
}
}
});