Est-il possible de sauvegarder et de restaurer des personnalisations de page personnelles après la suppression?

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

Question

Nous avons un code personnalisé pour permettre aux utilisateurs de supprimer, d'ajouter ou de réorganiser des pièces Web sur une page dans leur vue personnelle.Il s'agit d'une page Web de publication créée par un module à l'aide de modèles.

Comment pouvons-nous faire des mises à jour de cette page, disons pour supprimer une partie Web?(Apparemment, si je définis IgnorifalreadyExists= TRUEs Web Les parties Web seront ajoutées à la page.) Jusqu'à présent, nous avons supprimé et recréer la page.Cela détruit toutes les personnalisations de partie Web qu'un utilisateur peut avoir fait, et cela n'est plus acceptable car nous sommes maintenant en production.

Y a-t-il un moyen de sauvegarder et de restaurer une vue personnelle des utilisateurs après avoir supprimé et recréer une page?

Était-ce utile?

La solution

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.

Licencié sous: CC-BY-SA avec attribution
Non affilié à sharepoint.stackexchange
scroll top