【问题标题】:How to parse Audiences from list item如何从列表项中解析受众
【发布时间】:2011-11-08 08:16:24
【问题描述】:

我有一个SPList,它可以感知受众,我需要从SPListItem 解析它的受众。

string Audiences;

public Class1(SPListItem item)
{
  this.Audiences = item[FieldId.AudienceTargeting] as string;
} 

到目前为止,我已经做到了这一点。我一直在寻找如何从项目中解析每个受众,但找不到太多帮助。

有人知道这样做吗?

【问题讨论】:

    标签: c# sharepoint sharepoint-2010 target-audience


    【解决方案1】:

    来自this artical应该是这样的

    public Class1(SPListItem item)
    {
         string ID = item[FieldId.AudienceTargeting] as string;
         string NewID = ID.Remove(36);
         Guid guid = new Guid(NewID);
         Audience siteAudience = audManager.GetAudience(guid);
    } 
    

    然后可能是 siteAudience.GetMembership();

    【讨论】:

    • 36 到底是什么?这对我来说似乎不是一个灵活的解决方案
    【解决方案2】:

    当您想要第一个受众时,这很有用。有了这些台词,我受到启发去做这样的事情,这应该让我拥有所有观众的阵列:

    public Class1(SPListItem item)
    {
        string ID = item[FieldId.AudienceTargeting] as string;
        string audiences = audienceTargeting.Split(';')[0];
        String[] audiencesArray = audiences.split(',');
    

    }

    然后通过 guid 进行迭代以获取受众。

    记住这里描述的受众目标的语法:http://www.sharepoint-tips.com/2011/01/setting-target-audiences-with-code.html

    我会在测试后确认。

    【讨论】:

      【解决方案3】:

      我认为从列表中检索受众定位内容的正确方法是执行以下操作。

      string audString = item[fieldId.AudienceTargeting] as string;
      string[] audienceIds;
      string[] distinguishedNames;
      string[] spGroups;
      AudienceManager manager = new AudienceManager();
      AudienceManager.GetAudienceIDsFromText(audienceAsText, out audienceIds, out distinguishedNames, out spGroups);
      var namesList = manager.GetAudienceNames(new ArrayList(globalAudienceID.Select(id => new Guid(id)).ToList()));
      

      这样如果字符串的格式发生变化,GetAudienceEIDsFromText中api的变化也会随之变化。

      【讨论】:

        猜你喜欢
        • 2017-02-05
        • 1970-01-01
        • 2011-08-03
        • 1970-01-01
        • 2011-06-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多