Sharepoint 2010検索センターの結果ページでSearchResultWebPartのXSLTを変更するコードがあります(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内に、Webパーツが初期化されていないかどうかをチェックするコードが含まれていることがわかりました。XSLプロパティの設定で上記の例外がスローされます。誰かがこの問題を解決する方法を知っていますか?私にとっては、FeatureActivatedでXSLの変更を行うと非常に便利です...