У меня есть фрагмент кода, который изменяет XSLT SearchResultWebPart на странице результатов Центра поиска Sharepoint 2010 (spFileItem - это SPFile страницы результатов поиска):
SPLimitedWebPartManager wpManager = spFileItem.GetLimitedWebPartManager(PersonalizationScope.Shared);
foreach (WebPart wpItem in wpManager.WebParts)
{
if (wpItem is CoreResultsWebPart)
{
((CoreResultsWebPart)wpItem).UseLocationVisualization = false;
((CoreResultsWebPart)wpItem).Xsl = someXSL;
wpManager.SaveChanges(wpItem);
}
spFileItem.Update();
spFileItem.CheckIn(Consts.CheckInComment, SPCheckinType.MajorCheckIn);
Но этот код неработает, если он вызывается при активированной функции (дает InvalidOperationException - неправильное состояние объекта).Однако это прекрасно работает в консольном приложении.Поразмыслив, я обнаружил, что внутри SearchResultWebPart есть фрагмент кода, который проверяет, не была ли инициализирована веб-часть, и выдает указанное выше исключение при настройке свойства XSL.Кто-нибудь знает, как решить эту проблему?Для меня было бы очень удобно сделать XSL-изменение в FeatureActivation ...