ASP.NET SharePoint Web 部件:在根网站日历中显示子网站日历事件

Posted

技术标签:

【中文标题】ASP.NET SharePoint Web 部件:在根网站日历中显示子网站日历事件【英文标题】:ASP.NET SharePoint web part: Showing subsites calender events in root site calender 【发布时间】:2017-08-09 02:00:23 【问题描述】:

出于测试目的,我有一个名为 BigBroSite 的站点集合。在根站点下,我有三个子站点,分别称为 Support、Development 和 Marketing。在每个子站点上,我都有一个带有事件的日历应用程序。我要做的是找到所有子站点日历中的所有事件并将它们显示在根日历中。

我有 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)
                    



                    

                


            
        
    

我在网上搜索过很多使用数据库的教程。我不知道如何将其转化为我的问题。我应该有一个

SPListItemCollection

将事件数据传输到日历属性。我也不知道从可以接收 SPListItemCollection 的日历中调用哪些方法。到目前为止我收集到的是我应该使用

 protected void Calendar1_DayRender(object sender, DayRenderEventArgs e)
    

    

显示我从子站点收集的事件。如果您认为我走错了路,请随时为我指明正确的方向。

欢迎所有建议。

【问题讨论】:

【参考方案1】:

您不需要任何代码即可完成此操作!实际上你需要配置你的日历

1- 你需要创建一个“新日历”

2- 在日历覆盖设置中,您将放置您的子网站 URL

当您将事件添加到您的子站点日历中时,它将显示在根日历上

【讨论】:

谢谢。对于建议。我一定会试试的。但我也想学习如何通过代码来实现。 很遗憾,这不是上述问题的答案。我想用我自己的代码达到同样的目标。【参考方案2】:

除非您有特定的其他用例,否则 Melad 的答案是可行的方法。在这种情况下,您仍然不想自定义构建它,而是希望将内容搜索 Web 部件与自定义显示模板一起使用。如果您只是想学习如何使用 C# 响应与共享点列表交互,我们可以考虑回答该问题(尽管您在性能方面处于错误的轨道上,但请使用 SPSiteDataQuery 或 SPQuery 并且永远不要使用 SPList.Items,使用 SPList.GetItems(SPQuery))。

【讨论】:

以上是关于ASP.NET SharePoint Web 部件:在根网站日历中显示子网站日历事件的主要内容,如果未能解决你的问题,请参考以下文章

ASP.NET 按钮不呈现 ID - Sharepoint Web 部件

ASP.NET SharePoint Web 部件:在根网站日历中显示子网站日历事件

我现有的 Web 部件在 SharePoint 中不起作用

需要调用 dll 和 .js 文件的 SharePoint 2010 Web 部件

将SharePoint 2007迁移到2010

在 SharePoint Web 应用程序和 ASP.NET Web 应用程序之间传递用户凭据