2009-04-08 10 views
4

Je souhaite afficher le contenu ciblé (filtré) d'une liste aux utilisateurs. J'ai déjà une colonne dans la liste qui a essentiellement la valeur d'audience cible. Ce champ est une colonne à choix multiple (saisie par case à cocher) que je préfère dans le champ de saisie actuel pour les publics ciblés.Un élément de liste SharePoint peut-il avoir son audience cible calculée ou spécifiée automatiquement?

Pour que le filtrage d'audience fonctionne, j'ai malheureusement besoin de remplir le champ Audience ciblée pour chaque élément de la liste. Mon plan actuel consiste à utiliser un simple flux de travail de concepteur SharePoint pour définir le champ Audiences ciblées en fonction de mon autre domaine, mais je me demande s'il existe un meilleur moyen. Est-ce que je regarde juste mal?

Notez que je sais que le public peut également être utilisé pour masquer/afficher webparts, mais ce n'est pas quelque chose que je suis intéressé.

+0

Voulez-vous que différents utilisateurs aient des vues différentes de la même liste? Ou, est l'ensemble de ciblage pour toute la liste? – Jason

+0

Je veux que les différents utilisateurs (vraiment groupes d'utilisateurs - audiences) aient différents points de vue (filtres) de la même liste. –

Répondre

0

Je ne crois pas les publics cibles peuvent être mis en place comme un champ calculé, auquel cas vos options sont workflow ou un récepteur d'événement d'élément de liste.

Pour définir la valeur du champ d'audience, vous pouvez utiliser AudienceManager.GetAudienceIDsAsText; Gary Lapointe a un post with example usage.

+0

Merci - cela semble être le meilleur choix qui s'offre à moi. –

0

Peut-être utiliser un webpart pour afficher le contenu de la liste et utiliser Audiences sur la webpart semble une solution plus facile à gérer ...

+0

Voulez-vous utiliser un composant WebPart personnalisé? Cela pourrait certainement fonctionner, mais pas la réponse que j'espérais entendre. Mon espoir est que je ne comprends pas assez le public et qu'il y a un réglage simple qui me manque. –

+0

Je vois Audiencies juste pour marquer sur l'objet s'il est visible ou non. Combiné avec les paramètres d'autorisation peut réduire ce qui est affiché à différents groupes d'utilisateurs ... J'ai demandé dans un autre sujet de bonnes mises en œuvre d'un masque et montrant menuitems dépendant du statut d'un élément/membre du public – salgo60

4

Vous pouvez essayer de donner à ce tourbillon ...

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 
{} 
+0

Merci pour le code - cela peut s'avérer utile. –

Questions connexes