Этот код используется для работы в WSS 3.0 / MOSS 2007 в FeatureReceiver.FeatureActivation:
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);
}
Я пытаюсь перейти на SharePoint 2010, и теперь происходит сбой:
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)
Интересно, что когда я запускаю его из модульного теста, он работает, он не работает только в FeatureActivation. Когда я отлаживаю с помощью Reflector, в этой строке происходит сбой:
this.view = this.list.LightweightViews[new Guid(this.ViewGuid)];
list.LightweightViews возвращает только одно представление, представление по умолчанию, даже если list.Views возвращает все из них. При запуске из модульного теста LightweightViews возвращает все мои представления. Я понятия не имею, что должен означать LightweightViews, и у меня заканчиваются идеи. Кто-нибудь еще есть?