Skip to main content

ASPxPivotGrid.CustomLoadCallbackState Event

Allows you to load the ASPxPivotGrid’s callback state, which was previously saved by handling the ASPxPivotGrid.CustomSaveCallbackState event.

Namespace: DevExpress.Web.ASPxPivotGrid

Assembly: DevExpress.Web.ASPxPivotGrid.v23.1.dll

NuGet Package: DevExpress.Web


public event PivotGridCallbackStateEventHandler CustomLoadCallbackState

Event Data

The CustomLoadCallbackState event's data class is PivotGridCallbackStateEventArgs. The following properties provide information specific to this event:

Property Description
CallbackState Gets or sets the ASPxPivotGrid’s callback state.
Handled Gets or sets whether a callback state saving/loading operation is handled manually, so no default processing is required.


By default, the ASPxPivotGrid stores its intermediate state (callback state) in a specific hidden CallbackState field within a web page. In some cases, especially when the ASPxPivotGrid is connected to a huge OLAP cube, this state can be rather large, thereby affecting your web application performance. To reduce the web page size, you can store the ASPxPivotGrid’s callback state in a custom manner, for instance, in the Session object or a static variable. For this purpose, you should handle the ASPxPivotGrid.CustomSaveCallbackState and CustomLoadCallbackState events.

Handling the CustomLoadCallbackState event, you can manually load the previously saved callback state (by assigning it to the PivotGridCallbackStateEventArgs.CallbackState property). Set the PivotGridCallbackStateEventArgs.Handled property to true within the event’s handler to use a custom saving / loading mechanism instead of the default.


Note that if you do not handle the ASPxPivotGrid.CustomSaveCallbackState and CustomLoadCallbackState events, the ASPxPivotGrid’s callback state depends on the System.Web.UIControl.UniqueID property value.


This example demonstrates how the ASPxPivotGrid.CustomSaveCallbackState and ASPxPivotGrid.CustomLoadCallbackState events can be handled to preserve the ASPxPivotGrid’s callback state within a Session.

<dxwpg:ASPxPivotGrid ID="ASPxPivotGrid1" runat="server" 
                        data source=; 
                        initial catalog=Adventure Works DW Standard Edition;
                        cube name=Adventure Works;" 
        <dxwpg:PivotGridField ID="fieldCountry1" Area="RowArea" AreaIndex="0" 
        <dxwpg:PivotGridField ID="fieldCity1" Area="RowArea" AreaIndex="1" 
        <dxwpg:PivotGridField ID="fieldCustomerCount" Area="DataArea" AreaIndex="0" 
            Caption="Customer Count"
            FieldName="[Measures].[Customer Count]">
using System;
using DevExpress.Web.ASPxPivotGrid;

public partial class _Default : System.Web.UI.Page {
    protected void Page_Load(object sender, EventArgs e) {

    string GetPivotStateID(ASPxPivotGrid pivotGrid) {
        return GetType().FullName + "_" + pivotGrid.ID;
    protected void ASPxPivotGrid1_CustomSaveCallbackState(object sender, 
                                  PivotGridCallbackStateEventArgs e) {
        Session[GetPivotStateID((ASPxPivotGrid)sender)] = e.CallbackState;
        e.CallbackState = null;
        e.Handled = true;
    protected void ASPxPivotGrid1_CustomLoadCallbackState(object sender, 
                                  PivotGridCallbackStateEventArgs e) {
        e.CallbackState = (string)Session[GetPivotStateID((ASPxPivotGrid)sender)];
        e.Handled = true;
See Also