我在一个页面上有多个日历 Web 部件,并且我正在使用选项卡式 Web 部件区域将每个日历放在一个选项卡中。
问题是日历 Web 部件呈现,然后使用 AJAX 获取日历事件。一旦数据从服务器返回,它就会创建 DOM 元素position:absolute
并将它们放置在日历上。
第一个选项卡中的日历很好(因为它是可见的),但其他选项卡有问题。事件都在日历的左上角(可能是因为隐藏了 DOM 元素,无法正确计算事件的位置)。
我最接近解决这个问题的是使用以下javascript:
SP.UI.ApplicationPages.CalendarInstanceRepository.lookupInstance(instanceId).refreshItems();
这有两个问题:1)这是一个 ajax 调用,所以有一些延迟,用户会看到日历上的事件“快速”到位;2)日历本身的布局看起来很奇怪,因为某些原因,其中有事件的周将呈现为小于日历上其他周高度的一半。
我也尝试在初始加载过程中不隐藏日历(将它们移出屏幕),我遇到了同样的问题,但即使这样有效,如果用户调整大小,我仍然会遇到隐藏日历的问题浏览器。
我真正需要的是在 CalendarInstance 上有一个方法可以重绘/重新计算所有内容,但只能在客户端执行。