我有一个SPList
具有受众群体意识,我需要从SPListItem
解析其受众群体。
string Audiences;
public Class1(SPListItem item)
{
this.Audiences = item[FieldId.AudienceTargeting] as string;
}
到目前为止,我已经到了这个地步。我一直在寻找如何从项目中解析每个观众,但我找不到多少帮助。
有人知道这样做吗?
答案 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)
应该是这样的
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
我将在测试后确认。