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.v24.1.dll
NuGet Package: DevExpress.Web
Declaration
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. |
Remarks
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
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.
Example
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"
OLAPConnectionString="provider=MSOLAP;
data source=https://demos.devexpress.com/Services/OLAP/msmdpump.dll;
initial catalog=Adventure Works DW Standard Edition;
cube name=Adventure Works;"
OnCustomLoadCallbackState="ASPxPivotGrid1_CustomLoadCallbackState"
OnCustomSaveCallbackState="ASPxPivotGrid1_CustomSaveCallbackState">
<Fields>
<dxwpg:PivotGridField ID="fieldCountry1" Area="RowArea" AreaIndex="0"
Caption="Country"
FieldName="[Customer].[Country].[Country]">
</dxwpg:PivotGridField>
<dxwpg:PivotGridField ID="fieldCity1" Area="RowArea" AreaIndex="1"
Caption="City"
FieldName="[Customer].[City].[City]">
</dxwpg:PivotGridField>
<dxwpg:PivotGridField ID="fieldCustomerCount" Area="DataArea" AreaIndex="0"
Caption="Customer Count"
FieldName="[Measures].[Customer Count]">
</dxwpg:PivotGridField>
</Fields>
</dxwpg:ASPxPivotGrid>
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;
}
}