Current filter:
                                You should refresh the page.
                                  • Dear DevExpress Support,

                                    we are currently building a view for planning purposes based on your scheduler control. The Scheduler is grouped by resources and uses the TimelineView only.

                                    If there are more appointments in one time cell than there is room to display, the MoreButton appears.
                                    However, since we are not using the DayView, nothing happens after clicking the arrow.
                                    The effect we'd like to achieve is having a collected tooltip (like the appointment flyout) to open for all hidden appointments.

                                    We are also building this view for our web client using the DevExtreme scheduler. The DevExtreme scheduler offers the appointment collector to achieve this behaviour.
                                    Unfortunaltely we were not yet able to find a similar function in the DXScheduler component or find any other way to customize its behaviour for our needs.

                                    Is it possible to open some kind of popup for hidden appointments in the TimelineView?

                                    Or is it possible to override the cell template to create this behaviour by hand?
                                    The TimelineCellViewModel of the CellContentTemplate does not offer any information about appointments connected to the cell.

                                1 Solution

                                Creation Date Importance Sort by

                                Hello,

                                Yes, it is possible to show hidden appointments in a flyout when the More buttons is clicked. For this, subscribe to the MoreButtonClick event, obtain appointments from the corresponding interval and associated with a specific resources and then manually show the collection of appointments in a flyout.

                                I have prepared and attached a simple sample project demonstrating the main idea of this approach in action. Please take a moment to review it and let me know if you have additional questions.

                                Thanks,
                                Michael

                                • Mr. Peter 10.16.2019

                                  Thanks.

                                  I was stuck with a different task for a bit, so I just got around to test it.
                                  This s eems to be exactly what I was looking for and works very well so far.

                                  But I do have a small follow-up question:
                                  Is there an easy way to filter on non-visible appointments so that the flyout shows currently hidden appointments only?
                                  I did not see an obvious property in the AppointmentItem or a list of visible or hidden appoin tments to compare to.
                                  Anything more complex would probably not be worth the effort now.

                                • Michael Ch (DevExpress Support) 10.17.2019

                                  The SchedulerControl component doesn't provide a built-in API that allows you to determine which appointments are visible. However, you can iterate through SchedulerControl's visual tree and manually check which appointments are shown. For this, use our LayoutTreeHelper as follows:

                                  [C#]
                                  private void Scheduler_MoreButtonClick(object sender, DevExpress.Xpf.Scheduling.MoreButtonClickEventArgs e) { var button = scheduler.CalcHitInfo(Mouse.GetPosition(scheduler)).Element; if(button is Button) { var allAppts = scheduler.GetAppointments(e.Interval).Where(appt => ((int)appt.ResourceId) == ((int)e.Resource.Id)); var visibleAppts = LayoutTreeHelper.GetVisualChildren(scheduler).OfType<TimelineAppointmentControl>().Where(ac => ac.IsVisible).Select(ac => ((AppointmentViewModel)ac.DataContext).Appointment); var apptsToShow = allAppts.Where(appt => !visibleAppts.Contains(appt)); flyout.PlacementTarget = button; flyout.Content = apptsToShow; flyout.IsOpen = true; } }

                                  Please try this solution and let me know your results.