Question

Voici le problème: en utilisant SPD est facile aux propriétés de changement pour ne pas permettre aux utilisateurs de fermer / minimiser webparts d'une zone wp:

WebPartZone modifier les propriétés http://img34.imageshack.us/img34/3389/ webpartzoneedit.png

Maintenant, comment pouvons-nous faire dans le code? J'ai plus de 30 pages ASPX WebPart sur un site, je veux être en mesure de le faire afin que personne ne peut changer les propriétés WebParts (près, les supprimer, etc.)

La seule chose que j'ai trouvé est ce lien:. spwebpartzonetools

Lire plus à SDK: WSS 3.0 sdk , à le deuxième paragraphe important, il dit:

  

Bien que vous pouvez ajouter à la Web Parts   Afficher, Modifier et nouvelles formes pour la liste   articles (DispForm.aspx, EditForm.aspx,   et NewForm.aspx), cela n'est pas   recommandé ou pris en charge dans Windows   SharePoint Services. Ajout de composants WebPart   aux pages d'affichage de liste (AllItems.aspx) est   prise en charge.

Alors, c'est mon erreur que je veux fixer :). Je l'ai fait briser cette règle. Mon problème peut être résolu dans le SPD, mais je ne sais pas si cela peut être fixé dans le code.

L'erreur a été "inspiré" d'un des 40 fabuleux modèles: BudgetingTrackingMultipleProjects.wsp . Il sur la liste des projets, sur DispForm.aspx, Microsoft ajouter plus webparts pour créer un formulaire maître-détail.

Était-ce utile?

La solution

J'ai résolu mon problème comme ceci: si vous ouvrez le DispForm.aspx dans SPD et modifier les propriétés de la zone de partie web puis dans le code souce (ASPX), nous pouvons voir cette ligne:

 <WebPartPages:WebPartZone runat="server" FrameType="None" ID="Main" Title="loc:Main" allowlayoutchange="false" allowpersonalization="false" allowcustomization="false">

Alors j'ai créer une application simple de la console, que les visites chaque liste, obtenir l'URL de son DispForm.aspx et l'ouvrir comme un fichier texte normal. Donc, je ne suis pas en utilisant une API ou lissée, juste SPWeb.GetFile (String) - pour obtenir le SPFile et SPWeb.GetFileAsString (url) pour obtenir la teneur en ASPX comme chaîne. Ensuite, je l'injection des attributs ( allowlayoutchange / allowpersonalization / allowcustomization ) dans la ligne présentée ci-dessus en utilisant la recherche simplement de chaîne et remplacer les méthodes.

Ensuite, enregistrez le dos contenu dans le fichier ASPX en utilisant SPFile.SaveBinary (). Thats it, la prochaine fois DispForm.aspx est demandé au contrib. utilisateur ne peut pas faire une chose avec webparts à partir de là. Alors, qui est ma méthode pour modifier les propriétés de la zone de partie Web. Je suis tellement impatient de voir d'autres solutions.

Autres conseils

Vous devriez être en mesure de définir ces propriétés après l'approvisionnement des pièces Web (qui est si vous ne avez pas fait que dire Chris et défini dans le manifeste de la partie Web) par itérer les parties Web dans le SPLimitedWebPartManager (méfiez-vous de fuite ) sur chaque page et les AllowClose, AllowHide, AllowMinimize etc. propriétés.

HTH Anders Rask

Vous pouvez également définir ce au contrôle WebPartZone (en code ou en ASPX). Utilisez la propriété LockLayout, par exemple comme ceci:

<WebPartPages:WebPartZone LockLayout="true" runat="server"...>...</...>

/ WW

Avez-vous besoin de le faire dans le code? Si votre exigence est tout simplement aux utilisateurs de cesser de faire ces changements dans vos parties Web, cela est généralement traitée par l'approvisionnement de la partie Web avec des propriétés qui spécifient ce comportement par exemple:.

   <webPart xmlns="http://schemas.microsoft.com/WebPart/v3">
     <metaData>
       <type name="xxxxx.SharePoint.Common.WebParts.SiteDirectoryWebPartWrapper,
 xxxxxx.SharePoint.Common, Version=1.0.0.0, Culture=neutral, PublicKeyToken=xxxxxxxxxxxxx" />
       <importErrorMessage>Cannot import this Web Part.</importErrorMessage>
     </metaData>
     <data>
       <properties>
         <property name="AllowZoneChange" type="bool">False</property>
         <property name="AllowHide" type="bool">False</property>
         <property name="AllowMinimize" type="bool">False</property>
         <property name="AllowClose" type="bool">False</property>
         <property name="AllowEdit" type="bool">True</property>
         <property name="AllowConnect" type="bool">False</property>
         <property name="ExportMode" type="exportmode">All</property>
         <property name="Hidden" type="bool">False</property>
         <property name="TitleUrl" type="string" />
         <property name="Description" type="string">Displays a list of sites
 for the current area (e.g. 'teams') in a treeview. </property>
         <property name="Title" type="string">xxxxx Site Directory
 Web Part</property>
       </properties>
     </data>   
    </webPart> 
</webParts>
Licencié sous: CC-BY-SA avec attribution
Non affilié à sharepoint.stackexchange
scroll top