J'ai créé mon webpart qui fonctionne bien (je peux l'ajouter à la page et l'utiliser). Toutefois, si je veux le déplacer vers une zone différente ou modifier n'importe quel autre composant WebPart sur cette page, j'obtiens une exception.Je peux ajouter mon webpart personnalisé, mais je ne peux pas modifier un webpart sur la page
Des idées sur ce qui pourrait être faux?
Peut-être qu'il doit faire quelque chose avec que mon composant WebPart a une variable de zone null? Cependant webpart affiche bien sur la page. Détails ci-dessous. Edit: Ahh, non, je vois que d'autres parties du web (les originales) ont aussi la variable Zone comme nulle. De toute façon je n'ai aucune idée de comment digg même et découvrir le problème.
Exception occurred. (Exception from HRESULT: 0x80020009 (DISP_E_EXCEPTION))
Exception Details: Microsoft.SharePoint.WebPartPages.WebPartPageUserException: Exception occurred. (Exception from HRESULT: 0x80020009 (DISP_E_EXCEPTION))
Stack Trace:
[WebPartPageUserException: Exception occurred. (Exception from HRESULT: 0x80020009 (DISP_E_EXCEPTION))]
Microsoft.SharePoint.WebPartPages.SPWebPartManager.SaveSomeChanges(SPLayoutProperties layoutProperties) +897
Microsoft.SharePoint.WebPartPages.WebPart.SaveSomeChanges(SPLayoutProperties layoutProperties) +52
Microsoft.SharePoint.WebPartPages.SPWebPartManager.WPSaveSomeChanges(SPLayoutProperties layoutProperties) +83
Microsoft.SharePoint.WebPartPages.SPWebPartManager.ApplyChangeList(String changeString) +865
Microsoft.SharePoint.WebPartPages.SPWebPartManager.OnLoad(EventArgs e) +398
System.Web.UI.Control.LoadRecursive() +50
System.Web.UI.Control.LoadRecursive() +141
System.Web.UI.Control.LoadRecursive() +141
System.Web.UI.Control.LoadRecursive() +141
System.Web.UI.Control.LoadRecursive() +141
System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +627
La solution était dans le premier lien. J'utilisais une fonction où je passais l'objet SPWeb comme paramètre et à la fin de celui-ci, j'ai disposé. A commenté web.Dispose() et cela a fonctionné. –
Cool, et le point à retenir est le SPContext.Current.Web n'appartient pas à vous, donc ne jamais le jeter. – Kusek