我想将列表中的目标(已过滤)内容显示给用户。我已经在列表中有一个基本上具有目标受众值的列。此字段是一个多选列(复选框输入),我更喜欢目标受众的当前输入字段。
要让受众过滤工作,我很遗憾需要为每个列表项填写“目标受众”字段。我目前的计划是使用一个简单的SharePoint设计器工作流来根据我的其他字段设置Targeted Audiences字段,但我想知道是否有更好的方法。我只是看着这个错误吗?
请注意,我知道观众也可以用来隐藏/展示网页部分,但这不是我感兴趣的内容。
答案 0 :(得分:4)
你可以试着给它一个旋转...
SPField audienceField = null;
try
{
audienceField = list.Fields[Microsoft.SharePoint.Publishing.FieldId.AudienceTargeting]
}
catch
{}
if(audienceField != null)
{
try
{
Audience siteAudience;
ServerContext context = ServerContext.GetContext(site);
AudienceManager audManager = new AudienceManager(context);
foreach (SPListItem item in list.Items)
{
string audienceName = item["fakeAudienceField"]; //should be the audience name created in SSP
siteAudience = audManager.GetAudience(audienceName);
Guid id = siteAudience.AudienceID;
item["Target Audiences"] = id.ToString()+";;;;";
item.Update();
}
}
catch
{}
答案 1 :(得分:0)
也许使用webpart显示列表内容并使用webpart上的Audiences听起来更容易管理...
答案 2 :(得分:0)
我不相信目标受众可以设置为计算字段,在这种情况下,您的选项是工作流程或列表项事件接收器。
要设置受众群体字段值,您可以使用AudienceManager.GetAudienceIDsAsText
; Gary Lapointe有post with example usage。