出于测试目的,我有一个名为 BigBroSite 的网站集。在根站点下,我有三个子站点,分别为支持、开发和营销。在每个子网站上,我都有一个日历应用程序,其中包含事件。我想要做的是找到所有子站点日历中的所有事件并将它们显示在根日历中。
我有 SharePoint 2013、VS 2017,使用 SharePoint 2013 解决方案并向项目添加了可视化 Web 部件。
到目前为止我拥有的代码是:
protected void calender()
{
SPSite site = SPContext.Current.Site;
foreach (SPWeb web in site.AllWebs)
{
foreach (SPList cal in web.Lists)
{
if (cal.BaseTemplate == SPListTemplateType.Events)
{
foreach (SPListItemCollection activity in cal.Items)
{
}
}
}
}
}
我在网上搜索了很多使用数据库的教程。我不知道如何将其转化为我的问题。我应该有一个
SPListItem集合
将事件数据传输到日历属性。我也不知道从日历中调用哪些方法可以接收 SPListItemCollection。到目前为止我收集到的是我应该使用的
protected void Calendar1_DayRender(object sender, DayRenderEventArgs e)
{
}
显示我从子网站收集的事件。如果您认为我走错了路,请随时为我指出正确的方向。
欢迎所有建议。
Melad 的答案是可行的方法,除非您有特定的其他用例。在这种情况下,您仍然不想自定义构建它,而是希望将内容搜索 Web 部件与自定义显示模板结合使用。如果您只是想学习如何使用 C# 与共享点列表进行交互,我们可以考虑回答该问题(尽管您在性能方面走错了路,请使用 SPSiteDataQuery 或 SPQuery 并且永远不要转到 SPList.Items,使用 SPList.GetItems(SPQuery))。