Можно ли сделать резервную копию и восстановить настройки личной страницы после удаления?

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

Вопрос

У нас есть пользовательский код, чтобы позволить пользователям удалить, добавлять или изменить заземление веб-частей на странице в своем личном представлении.Это издательская веб-страница, созданная модулем, использующим шаблоны.

Как мы можем сделать обновления на эту страницу, скажем, чтобы удалить веб-часть?(Очевидно, если я устанавливаю INGLOREIFALREADYEXIS= True Web Parts, будет добавлена на страницу.) До сих пор мы удалили и воссоздая страницу.Это разрушает любые персональные веб-часть, которые могут выполнить пользователь, и это уже не приемлемо, поскольку мы сейчас находимся в производстве.

Есть ли способ резервного копирования и восстановления персонального представления пользователей после удаления и воссоздания страницы?

Это было полезно?

Решение

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.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с sharepoint.stackexchange
scroll top