ページに複数の予定表 Web パーツがあり、タブ付き Web パーツ ゾーンを使用して各予定表をタブに配置しています。
問題は、カレンダー Web パーツがレンダリングされ、AJAX を使用してカレンダー イベントを取得することです。position:absolute
データがサーバーから返されると、カレンダーに配置するDOM 要素が作成されます。
最初のタブのカレンダーは (表示されているので) 問題ありませんが、他のタブには問題があります。イベントはすべてカレンダーの左上隅にあります (おそらく、DOM 要素が非表示になっているため、イベントの位置を正しく計算できなかったためです)。
この問題を解決するのに最も近いのは、次の JavaScript を使用することです。
SP.UI.ApplicationPages.CalendarInstanceRepository.lookupInstance(instanceId).refreshItems();
これには 2 つの問題があります。1) これは ajax 呼び出しであるため、多少の遅延があり、ユーザーはイベントがカレンダーに「スナップ」されているのを確認します。2) 何らかの理由で、カレンダー自体のレイアウトが奇妙に見えます。 、イベントのある週は、カレンダーの他の週の高さの半分未満としてレンダリングされます。
また、最初の読み込みプロセス中にカレンダーを非表示にしないようにしました (画面外に移動します)。同じ問題が発生していますが、それが機能しても、ユーザーがサイズを変更すると非表示になるカレンダーに問題があります。ブラウザ。
私が本当に必要としているのは、CalendarInstance にすべてを再描画/再計算するメソッドが存在することですが、それはクライアント側でのみ実行されます。