Este código se utiliza para trabajar en WSS 3.0/MOSS 2007 en FeatureReceiver.FeatureActivated:"La vista especificado no es válido" en la llamada a LimitedWebPartManager.AddWebPart en SharePoint 2010
using (SPLimitedWebPartManager limitedWebPartManager = Site.GetLimitedWebPartManager("default.aspx", PersonalizationScope.Shared)) {
ListViewWebPart listViewWebPart = new ListViewWebPart {
Title = title,
ListName = list.ID.ToString("B").ToUpper(),
ViewGuid = view.ID.ToString("B").ToUpper()
};
limitedWebPartManager.AddWebPart(listViewWebPart, zone, position);
}
Estoy tratando de convertir a SharePoint 2010 y ahora falla con:
System.ArgumentException: The specified view is invalid.
at Microsoft.SharePoint.SPViewCollection.get_Item(Guid guid)
at Microsoft.SharePoint.WebPartPages.ListViewWebPart.EnsureListAndView(Boolean requireFullBlownViewSchema)
at Microsoft.SharePoint.WebPartPages.ListViewWebPart.get_AppropriateBaseViewId()
at Microsoft.SharePoint.WebPartPages.SPWebPartManager.AddWebPartInternal(SPSupersetWebPart superset, Boolean throwIfLocked)
at Microsoft.SharePoint.WebPartPages.SPLimitedWebPartManager.AddWebPartInternal(WebPart webPart, String zoneId, Int32 zoneIndex, Boolean throwIfLocked)
at Microsoft.SharePoint.WebPartPages.SPLimitedWebPartManager.AddWebPart(WebPart webPart, String zoneId, Int32 zoneIndex)
Curiosamente cuando lo ejecuto desde una unidad de prueba funciona, sólo fracasa en FeatureActivated. Cuando la depuración con el reflector está fallando en esta línea:
this.view = this.list.LightweightViews[new Guid(this.ViewGuid)];
list.LightweightViews sólo devuelve un punto de vista, la vista predeterminada, a pesar de que list.Views devuelve todos ellos. Cuando se ejecuta desde una prueba de unidad, LightweightViews devuelve todas mis vistas. No tengo idea de lo que se supone que significa LightweightViews y me estoy quedando sin ideas. ¿Alguien más tiene alguno?
Esta alternativa también trabajó para mí: 1. No coloque ViewGuid, 2. AddWebPart, 3. conjunto ViewGuid, 4 . Guardar cambios – jumbo