Questo codice utilizzato per lavorare in WSS 3.0/MOSS 2007 in FeatureReceiver.FeatureActivated:"La vista specificato non è valido" in chiamata a LimitedWebPartManager.AddWebPart in 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);
}
Sto cercando di convertire in SharePoint 2010 e ora viene a mancare 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)
è interessante notare che quando l'eseguo da un test di unità funziona, non riesce solo in FeatureActivated. Quando metto a punto con riflettore si sta venendo a mancare su questa linea:
this.view = this.list.LightweightViews[new Guid(this.ViewGuid)];
list.LightweightViews restituisce solo un punto di vista, la visualizzazione predefinita, anche se list.Views restituisce tutti. Quando si esegue da un'unità test LightweightViews restituisce tutte le mie visualizzazioni. Non ho idea di cosa intenda dire LightweightViews e sono a corto di idee. Qualcun altro ne ha?
Questa alternativa ha funzionato anche per me: 1. Non impostare ViewGuid, 2. AddWebPart, 3. set ViewGuid, 4 . Salva I Cambiamenti – jumbo