To Load a Widget Synchronously or Asynchronously
By default, if a widget class is inherited from the PX.Dashboards.Widgets.PXWidgetBase abstract class, the widget is loaded asynchronously after the page has been loaded. You can change this behavior by using the AsyncLoading() method of the widget class, as described in the following sections.
To Load a Widget Synchronously
To load a widget synchronously along with the page, override the
AsyncLoading() method, as the following code
shows.
using PX.Web.UI;
using PX.Dashboards.Widgets;
public override AsyncLoadMode AsyncLoading
{
get { return AsyncLoadMode.False; }
}
To Load a Widget Asynchronously
To load a widget asynchronously after the page has been loaded, you do not need to
perform any actions, because the following implementation of the
AsyncLoading() method is used by
default.
using PX.Web.UI;
using PX.Dashboards.Widgets;
public override AsyncLoadMode AsyncLoading
{
get { return AsyncLoadMode.True; }
}
To Load a Widget that Performs a Long-Running Operation
If a widget performs a long-running operation during loading, such as reading data
that takes a long time, use the following approach to load this widget:
- Override the AsyncLoading() method, as the following code
shows. In this case, for processing the data of the widget, the system
starts the long-running operation in a separate
thread.
using PX.Web.UI; using PX.Dashboards.Widgets; public override AsyncLoadMode AsyncLoading { get { return AsyncLoadMode.LongRun; } }
- Override the ProcessData() method of the widget class so that it implements all the logic for the widget that consumes significant time while loading.
- Override the SetProcessResult() method of the widget class so that it retrieves the result of the processing of the widget data.
If these methods are implemented, the system calls them automatically when it loads the widget on a dashboard page.