感悟生活

Life is like a box of chocolates. You never know what you're gonna get.
随笔 - 97, 评论 - 983, 引用 - 46

导航

关于

标签

每月存档

最新留言

  • iwobz
    <p>看了你那篇用程序登陆asp.net的文章,我觉得你是在骗人,昨天我也写这样的程序,我也把那些viewstate,username,password和eventvalidation那些...
    by iwobz(注册) on 2009/11/29 15:10:41
  • re:SharePoint的小秘密
    <p>@开心就好:测试2</p>
    by 开心就好(注册) on 2009/1/8 22:36:27
  • re:SharePoint的小秘密
    <p>@开心就好:测试</p>
    by 开心就好(注册) on 2009/1/8 22:30:45
  • 回复: 微软拼音输入法2003
    你好,我需要下载,谢谢
    by 李鑫龙(匿名) on 2008/2/20 12:56:00
  • 回复: 微软拼音输入法2003
    你好,我需要下载,谢谢
    by ヤ偽妳變儍い(匿名) on 2008/2/18 16:07:00
  • 回复: 微软拼音输入法2003
    我要用反体字聊QQ
    by 郝语情(匿名) on 2008/2/14 3:33:00
  • 回复: 微软拼音输入法2003
    我要下载
    by ﹏賎侽魜▓(匿名) on 2008/1/23 1:04:00
  • 回复: 有限状态机 理论联系实际
    写程序没理论指导,不重视基础,到现在才发现问题,本末倒置的学习过程。要是有正确的学习方法,水平远应比现在高。
    by wr(匿名) on 2008/1/15 18:08:00
  • SOA基本介绍
    Webservice已经不再是新婚的娘子。众多企业都已经创建各种实验性WebServices项目,事实证明,这项新兴的分布式计算技术确实能够降低集成和开发的成本。另外,一些关键的WebServ...
    by IamV(匿名) on 2007/12/31 16:31:00
  • 回复: SharePoint的小秘密
    在管理中心可以查看Site Collection使用哪个Content DB!
    by it(匿名) on 2007/12/25 11:10:00

广告

 

有客户问我,怎么拿到应用到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 wpcollection) { if(wp.IsIncludedFilter == string.Empty) { Debug.WriteLine("No Target Audience was selected for " + wp.Title); } else { // IsIncludedFilter contains a comma delimited list of audience GUID, // which format is "'guid1','guid2'" string[] GUIDs = wp.IsIncludedFilter.Split(','); foreach(string GUID in GUIDs) { Audience au = am.GetAudience(new Guid(GUID.Substring(1, GUID.Length - 2))); if(au != null) { Debug.WriteLine("Target Audience, " + au.AudienceName + ", was selected for " + wp.Title); ArrayList membership = au.GetMembership(); if(membership != null) { for(int i = 0; i < membership.Count; i++) { Debug.WriteLine(" --" + ((UserInfo)membership[i]).PreferredName); Debug.WriteLine(" --" + ((UserInfo)membership[i]).Email); Debug.WriteLine(" --" + ((UserInfo)membership[i]).NTName); } } } } } } }

打印 | 张贴于 2005-09-20 17:42:00 | Tag:工作

留言反馈

#回复: Get Audiences of WebParts. 编辑
字体太小了吧
2007-09-15 16:32:00 | [匿名:qi]
#回复: Get Audiences of WebParts. 编辑
说的什么东东啊,我都看不懂啦?????????
2007-03-23 11:34:00 | [匿名:vvzsy]
#re: Get Audiences of WebParts. 编辑
en
2006-10-08 23:49:00 | [匿名:影视制作,宣传片制作,影视广告制作]
对不起,目前本随笔不允许发表新评论.

Powered by: Joycode.MVC引擎 0.5.2.0