2011-08-12 54 views
0

嗨,我是新的SharePoint人員。如何以編程方式將Web部件定位到受衆羣體可以提供任何答案。如何將Web部件定位到觀衆

+0

嗨,歡迎來到Stack Overflow。你有沒有注意到你的問題下面有一個灰色的編輯鏈接?在未來,如果您可以使用它,而不是用更多信息重新發布問題,那將是非常好的。 –

回答

1

按本link

提供權限爲特定SharePoint組在SharePoint Web部件,我們必須使用AudienceManager如下圖所示

SPWeb currentSite = SPContext.Current.Site.RootWeb; 
SPSite spSite = currentSite.Site; 

SPServiceContext sc = SPServiceContext.GetContext(spSite); 
AudienceManager am = new AudienceManager(sc); 

Microsoft.SharePoint.WebPartPages.SPLimitedWebPartManager mgr = null; 
mgr = currentSite.GetLimitedWebPartManager("SitePages" + "/" + page,   
     System.Web.UI.WebControls.WebParts.PersonalizationScope.Shared); 
foreach (System.Web.UI.WebControls.WebParts.WebPart webPart in mgr.WebParts) 
{ 
    if (webPart.Title == "WebPartTitle") 
    { 
      //Get the Existing Audience for the Web Part 
      string audWebPart = webPart.AuthorizationFilter; 
      //If there is no Audience for the Web Part just add it 
      if (audWebPart == "") 
      { 
       webPart.AuthorizationFilter = ";;;;" + NewAudience; 
      } 
      //If already Audiences are exist for the Web Part then append new Audience 
      else 
      { 
       webPart.AuthorizationFilter = audWebPart + "," + NewAudience; 
      } 
      mgr.SaveChanges(webPart); 
      lblMessage.Text = "Succeeded..."; 
    } 
} 

如果我們只是設定AuthorizationFilter屬性的值,那麼現有的受衆羣體將被覆蓋。 爲了避免它首先,我們必須檢查該Web部件是否已有受衆羣體。如果是這樣,我們必須追加它。

SharePoint Server 2010框架要求三種值由一對分號(「;;」)分隔。全局受衆羣體和SharePoint羣組的多個值由逗號分隔,並且分配列表的多個值由換行符(「\ n」)分隔。因此在上面的例子中我們使用了「;;;;」爲AuthorizationFilter屬性提供有效的字符串。

+0

我應用了相同的代碼,但發生錯誤。錯誤是 - 無法找到類型或命名空間名稱'AudienceManager'(您是否缺少using指令或程序集引用?)我添加了命名空間Microsoft.Office.Server.Audience;但它給錯誤,該服務器不在Microsoft.Office名稱空間 –

+0

感謝您的答覆。我的問題已解決。謝謝你這麼多 –

+0

歡迎你!樂意效勞。如果這個答案確實解決了你的問題,將不勝感激,如果你可以標記爲答案。謝謝! –

相關問題