摘要:有客户问我,怎么拿到应用到WebPart上的Audiences。一想很简单,还不就是用AudienceManage通过Audience所对应的GUID来Get吗。谁知道一写才发现了问题,与某个WebPart对应的GUID去哪里找到呢?难道要去Query database?不信WebPart类有这么傻。
查了半天终于发现,WebPart的IsIncludedFilter属性包含了所有应用到WebPart上的Audiences的GUID,它们使用逗号分隔。知道了这个就简单了。private void button1_Click(object sender, System.EventArgs e)
...{
// Get PortalContext.
TopologyManager tm = new TopologyManager();
PortalSite ps = tm.PortalSites[new Uri("http://testsrv")];
PortalContext pc = PortalApplication.GetContext(ps);
// Get all WebParts.
SPSite site = new SPSite("http://testsrv");
SPWeb web = site.OpenWeb();
SPWebPartCollection wpcollection = web.GetWebPartCollection("default.aspx", Storage.Shared);
// Get all audiences for each webpart.
AudienceManager am = new AudienceManager(pc);
foreach(WebPart wp in......[
阅读全文]