2010-04-13 5 views
1

J'essaie d'émettre du jQuery et d'autres Javascript qui vont cacher et montrer des WebParts sur une page. Ce que je voudrais faire est de trouver une des deux choses:Obtenir le GUID d'un WebPart dans SharePoint 2007

  • L'ID de la cellule de table qui contient le composant WebPart (c.-à-MSOZoneCell_WebPartWPQ5)
  • Le WebPartID de l'onglet div du webpart qui montre dans la HTML (c.-à-WebPartID = "059611a7-ADEF-479E-BDA9-fe5799dc62d1")

Je l'ai regardé les WebParts dans la zone que je veux avoir un impact en utilisant le code suivant:

 System.Web.UI.WebControls.WebParts.WebPartZoneBase 
     myZone = this.Zone; 

     if (myZone != null) 
     { 

      for (int i = 0; i < myZone.WebParts.Count; i++) 
      { 
       // Get the web part 
       System.Web.UI.WebControls.WebParts.WebPart wp = 
        myZone.WebParts[i] as System.Web.UI.WebControls.WebParts.WebPart; 
       if (wp != null) 
       { 
        // Build an XPath query to get the attribute for 
        // this web part 
        string xpathQuery = "/tabs/tab[@name='" + wp.Title + "']"; 

        XmlElement wpElement = 
         tabConfigDoc.SelectSingleNode(xpathQuery) as XmlElement; 

        if (wpElement != null) 
        {        
         hideTabsJS.AppendFormat("$(\"#{0}\").hide(); ", wp.ID); 
         //switchTabsJS.AppendFormat("$(\"#{0}\").hide(); ", wp.ClientID); 
        } 
       } 
      } 

le p roblem est qu'aucune des API pour WebPart ou WebPartManager ne semble fournir cette information. Est-il possible de dériver l'un des deux ID?

Répondre

1

Je sais c'est vieux, mais je suis tombé sur elle pour interroger autre chose, et pensé qu'il pourrait être utile de « le fermer. ». La propriété Microsoft.SharePoint.WebPartPages.WebPart que Rob cherchait (et a probablement trouvé il ya longtemps) est la propriété StorageKey.

+0

En fait ce n'était pas le cas et je le faisais comme indiqué ci-dessus. Merci pour l'information! – Rob

1

Juste par curiosité, avez-vous essayé de lancer les parties Web comme Microsoft.SharePoint.WebPartPages.WebPart et d'accéder à l'ID de cela?

(de http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.webpartpages.webpart.id.aspx)

+0

Oui, la propriété ID revient quelque chose comme "g_059611a7_adef_479e_bda9_fe5799dc62d1". Suis-je coincé en train de faire un String.Replace pour se débarrasser du g_ puis un autre pour remplacer les underscores par des tirets? Ou y a-t-il une manière plus élégante de faire ceci? – Rob

+0

S'il n'y a aucune propriété exposée autrement pour récupérer cette valeur alors c'est peut-être le seul moyen de le faire. Ce n'est pas forcément * trop * manquant d'élégance – zincorp

Questions connexes