Pergunta

Temos código personalizado para permitir que os usuários removem, adicione ou reordene as Web Parts em uma página em sua visualização pessoal.É uma página de publicação da Web Parts criada por um módulo usando modelos.

Como podemos fazer atualizações nesta página, digamos para remover uma web parte?(Aparentemente, se eu definir IgnoreifalreadyExists= True Web Parts será adicionado à página.) Até agora, estamos excluindo e recriando a página.Isso destrói qualquer personalização de web part de um usuário pode ter feito, e isso não é mais aceitável, pois estamos agora em produção.

Existe uma maneira de fazer backup e restaurar a visualização pessoal de um usuário depois de excluir e recriar uma página?

Foi útil?

Solução

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 em: CC-BY-SA com atribuição
Não afiliado a sharepoint.stackexchange
scroll top