¿Es posible realizar copias de seguridad y restaurar las personalizaciones personales después de la eliminación?

sharepoint.stackexchange https://sharepoint.stackexchange.com//questions/78990

Pregunta

Tenemos código personalizado para permitir que los usuarios eliminen, agreguen o reordenan las piezas web en una página en su vista personal.Es una página de la parte web de publicación creada por un módulo usando plantillas.

¿Cómo podemos hacer actualizaciones a esta página, digamos para eliminar una parte web?(Aparentemente, si configuro IgnoreFalreadyExists= True Web Parts se agregará a la página). Hasta ahora, hemos estado eliminando y recreando la página.Esto destruye las personalizaciones de la parte web que un usuario puede haber hecho, y eso ya no es aceptable, ya que ahora estamos en producción.

¿Hay alguna forma de hacer una copia de seguridad y restaurar la vista personal de un usuario después de eliminar y recrear una página?

¿Fue útil?

Solución

In simple terms doing something like (important here is of course PersonalizationScope.User):

        SPLimitedWebPartManager webPartManager = SPContext.Current.Web.GetLimitedWebPartManager(this.Request.Url.ToString(), PersonalizationScope.User);
        int wpCounter = webPartManager.WebParts.Count; //get counter
        /*either start looping or for a single web part use*/        
WebPart webPart = webPartManager.WebParts[wpId];
         /*do something with the web part*/

But this has 1 important limitation - it only works for Web parts placed in Web part zone. In addition there is a method (actually part of the ASP.NET Web part infrastructure) called SavePersonalizationState via the Personalization property on each Web part, see more here (http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.webparts.personalizationprovider.savepersonalizationstate(v=vs.90).aspx). I haven't really been in a situation to try myself!

The biggest challenge would be maybe to collect personalization data for all users. Maybe the fact that it uses the Provider pattern could help, by using the FindState method (http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.webparts.personalizationprovider.findstate(v=vs.90).aspx) to extract all data.

Licenciado bajo: CC-BY-SA con atribución
scroll top