在基本团队网站模板的主页上,我有一个日历webpart,默认情况下其视图基于日历列表日历视图。我的问题是,在日历列表中应用新的日历覆盖后,主页面视图不会自动更新以反映此更改。我必须编辑webpart,选择日历视图(默认情况下当前正在使用的那个)并应用该更改。我试图在powershell中完成这项任务而没有运气。
我正在尝试使用的代码是:
$web = get-spweb "http://portal/site/testsite1"
$file = $web.getfile("default.aspx")
$manager = $file.getlimitedwebpartmanager([System.web.ui.webcontrols.webparts.personalizationscope]::shared)
$manager.webparts | format-list title, ID
$wp = $manager.webparts["GUID_HERE"]
$doclib = $web.lists["Calendar"]
$view = $doclib.Views["Calendar"]
$wp.ViewGuid = $view.ID.ToString("B").ToUpper()
$manager.SaveChanges($wp)
不幸的是,这在更新视图以反映日历视图中应用的当前叠加层方面效果不佳,因此只有人工干预才有效。是否有一些我可以用来完成这项任务的PowerShell代码?
答案 0 :(得分:0)
这个想法是正确的,但详细说来是有错误的。您不应该依赖ViewGuid。看看this article。你会发现它很有用。然后将.NET代码转换为PowerShell脚本,您将拥有所需的内容。更好的建议是将此代码放入事件接收器并将事件接收到触发更新列表的事件中。