Pregunta

Aquí está el problema: el uso de SPD es fácil de cambiar las propiedades de no permitir a los usuarios cerrar / minimizar webparts de una zona de WP:

webpartzone editar propiedades http://img34.imageshack.us/img34/3389/ webpartzoneedit.png

Ahora, ¿cómo podemos hacer que en código? He más de 30 páginas aspx WebPart en un sitio, quiero ser capaz de hacer eso por lo que nadie puede cambiar las propiedades WebParts (cerca, borrarlos, etc.)

Lo único que se encontró es este enlace:. spwebpartzonetools

Lectura más en SDK en: WSS 3.0 SDK , en el segundo párrafo adicional que dice:

Aunque puede agregar elementos web a la Visualizar, editar, y nuevas formas para la lista artículos (DispForm.aspx, EditForm.aspx, y NewForm.aspx), al hacerlo, no es recomendado o soportado en Windows SharePoint Services. La adición de elementos web a la lista de páginas de vista (AllItems.aspx) es soportado.

Así que ese es mi error que yo quiero arreglar :). Hice romper esa regla. Mi problema se puede solucionar en el SPD, pero no sé si eso se puede fijar en el código.

El error fue "inspirada" de una de las fabulosas plantillas de 40: BudgetingTrackingMultipleProjects.wsp . Hay en la lista de proyectos, en DispForm.aspx, Microsoft añadir más webparts para crear un formulario principal-detalle.

¿Fue útil?

Solución

he resuelto mi problema de esta manera: si se abre la DispForm.aspx en SPD y modificar las propiedades web de la zona a continuación, parte en el código souce (aspx) podemos ver esta línea:

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

Así que he crear una aplicación de consola sencilla, que las visitas de cada lista, obtener la URL de su DispForm.aspx y abrirlo como un archivo de texto normal. Así que no estoy usando cualquier API o algo bajo, simplemente SPWeb.GetFile (String) - para obtener el SPFile y SPWeb.GetFileAsString (url) para obtener el contenido como aspx cuerda. Entonces estoy inyectando los atributos ( allowlayoutchange / AllowPersonalization / allowcustomization ) en la línea presentada anteriormente utilizando sólo la cadena de búsqueda y reemplazar métodos.

A continuación, guarde la parte trasera contenido a aspx utilizando SPFile.SaveBinary (). Eso es todo, la próxima vez que se solicita la DispForm.aspx contrib. usuario no puede hacer nada con webparts desde allí. Así que es mi método para cambiar web propiedades de la zona parcial. Estoy muy ansioso para ver otras soluciones.

Otros consejos

debe ser capaz de establecer estas propiedades después del aprovisionamiento de las piezas de la tela (es decir, si ustedes hecho como Chris digamos y lo definió en el manifiesto de la parte web) iterando las piezas de la tela en el SPLimitedWebPartManager (cuidado de fuga ) en cada página y establecer el AllowClose, AllowHide, AllowMinimize etc. propiedades.

hth Anders Rask

También podría establecer esto en el control WebPartZone (en clave o en aspx). Utilice la propiedad LockLayout, por ejemplo a esto:

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

/ WW

¿Es necesario hacerlo en código? Si su requerimiento es simplemente a los usuarios dejar de hacer estos cambios en los elementos web, esto es típicamente tratado por el aprovisionamiento de la pieza de la tela con propiedades que especifican este comportamiento por ejemplo:.

   <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>
Licenciado bajo: CC-BY-SA con atribución
scroll top