SharePoint列表项是否可以计算或以其他方式自动指定目标受众?

时间:2009-04-08 20:21:30

标签: sharepoint moss

我想将列表中的目标(已过滤)内容显示给用户。我已经在列表中有一个基本上具有目标受众值的列。此字段是一个多选列(复选框输入),我更喜欢目标受众的当前输入字段。

要让受众过滤工作,我很遗憾需要为每个列表项填写“目标受众”字段。我目前的计划是使用一个简单的SharePoint设计器工作流来根据我的其他字段设置Targeted Audiences字段,但我想知道是否有更好的方法。我只是看着这个错误吗?

请注意,我知道观众也可以用来隐藏/展示网页部分,但这不是我感兴趣的内容。

3 个答案:

答案 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