2009-04-08 66 views
4

我想从列表中向用户显示目标(过滤的)内容。我在列表中已经有一个列,基本上具有目标受众值。该字段是一个多选列(复选框输入),我比目前的受众群体更倾向于输入字段。SharePoint列表项是否可以计算目标受众群体或以其他方式自动指定?

为了让受众群体筛选工作,我不幸需要为每个列表项目填写目标受众群体字段。我目前的计划是使用一个简单的SharePoint设计器工作流程来设置基于我的其他领域的目标受众字段,但我想知道是否有更好的方法。我只是看着这个错误?

注意,我知道观众也可以用来隐藏/显示Web部件,但是这不是我感兴趣的

+0

你想让不同的用户对同一个列表有不同的看法吗?或者,整个列表的目标是? – Jason 2009-04-09 06:34:44

+0

我希望不同的用户(真正的用户组 - 观众)拥有相同列表的不同视图(过滤器)。 – 2009-04-14 14:20:43

回答

0

也许使用的WebPart显示列表的内容和对使用观众听起来网页组件的解决方案更易于管理...

+0

您是否在说使用自定义Web部件?这当然可以奏效,但不是我希望听到的答案。我的希望是,我不了解观众足够多,并且有一些简单的设置,我错过了。 – 2009-04-09 02:04:53

+0

我看到Audience只是为了标记对象是否可见。结合权限设置可以缩小向不同用户组显示的内容... 我在另一个主题中询问了隐藏和显示菜单项的良好实现,这取决于项目/观众成员的状态 – salgo60 2009-04-09 10:06:18

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 
{} 
相关问题