2012-09-26 1 views
0

J'ai PublishingLayoutPage et dépend des paramètres de requête je devrais cacher quelques webparts.Comment cacher webpart dans sharepoint seulement pour l'utilisateur ou le cas spécifique

Mais je ne sais pas comment faire. Parce que si je comprends bien le problème SPLimitedWebPartManager va cacher webpart pour tous les utilisateurs! Comment masquer webpart et ne permet pas de rendre le contenu uniquement pour un cas spécifique sur la page?

+1

Pouvez-vous clarifier vos besoins/accès? Est-ce que votre logique utilisateur/rôle est basé ou y a-t-il aussi une logique métier? Vouliez-vous mettre en œuvre la logique/code? Envisagez-vous d'utiliser Client Object Model ou une partie Web personnalisée avec codebehind pour gérer d'autres parties web? –

+0

si j'ai url param comme "? View = short" certains webparts devraient être cachés. – Evgeny

+1

Avez-vous la possibilité d'inclure votre propre code de serveur personnalisé sur la page/layout/masterpage? –

Répondre

1

On dirait que vous pouvez placer dans votre charge/PreRender/où est approprié:

List<string> webPartTitlesToHide = new List<string>(); 
    webPartTitlesToHide.Add("Long Title"); 
    webPartTitlesToHide.Add("Long Content"); 
    webPartTitlesToHide.Add("Long Footer"); 


    if (Request["view"] == "short") 
    { 
     WebPartManager wpm = WebPartManager.GetCurrentWebPartManager(this); 
     foreach (WebPart wp in wpm.WebParts) 
     { 
      if (webPartTitlesToHide.Contains(wp.Title)) 
      { 
       wpm.CloseWebPart(wp); 
      } 
     } 
    } 

De toute évidence, vous avez probablement une meilleure façon de sélectionner qui webparts à cacher, mais cela est juste un exemple.

+0

Dans ce cas, rien ne se passe. Webparts toujours là. – Evgeny

+0

Lorsque vous déboguez, wp.Visible = false est en cours d'exécution et affiche toujours " –

+0

en fait oui ... – Evgeny