如何从列表项解析受众

时间:2011-09-01 11:40:03

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

我有一个SPList具有受众群体意识,我需要从SPListItem解析其受众群体。

string Audiences;

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

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

有人知道这样做吗?

3 个答案:

答案 0 :(得分:1)

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

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()));

这样,如果字符串的格式发生变化,GetAudiencEIDsFromText中api的变化将相应地发生变化。

答案 1 :(得分:0)

来自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();

答案 2 :(得分:0)

当您想要第一个受众时,这非常有用。通过这些线条,我受到鼓舞去做这样的事情,这应该让我得到一个包含所有观众的阵列:

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

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

然后通过guid迭代以获得观众。

请注意观众目标的sintax,如下所述:http://www.sharepoint-tips.com/2011/01/setting-target-audiences-with-code.html

我将在测试后确认。