Serializing and Deserializing the Pivot Grid for Windows Forms

With the upcoming Essential Studio 2018 Volume 2 release, the serialization and deserialization support will be included in the pivot grid control for WPF. This feature provides extensible support for saving the control’s settings as a stream or as an XML document, and it can be loaded whenever needed. Using this support, pivot grid settings like pivot row items, pivot column items, pivot calculation items, filtered items, sorted items, grouping bar items, conditional format settings, and expand/collapse state of pivot items can be limited with the help of built-in customization options while saving and loading the reports.

Serializing Pivot Grid

The pivot grid control allows the user to save its current settings into a stream or XML document using predefined methods. Let’s see what approaches are available for serializing the control in the immediate sections.

Serialize using save file dialog

Using the Serialize() method, the settings of the pivot grid control can be saved to a desired XML document, and its location can be chosen using save file dialog.

this.pivotGridControl1.Serialize();

Serialize using specific file

Using the Serialize(string filename) method, the settings of the pivot grid control can be saved to a document that is specified using its file name.

this.pivotGridControl1.Serialize("PivotGrid.xml");

Serialize using stream

Using the Serialize(Stream stream) method, the settings of the pivot grid control can be saved to the specified stream.

using (FileStream fileStream = File.Create("PivotGrid.xml"))
{
    this.pivotGridControl1.Serialize(fileStream);
}

Serialize to XML string

Using the SerializeToXml() method, the settings of the pivot grid control can be converted to an XML string which can be preserved for later use.

this.pivotGridControl1.SerializeToXml();

Customizing serialization

By default, all the settings of the pivot grid control are serialized to save in the stream format. Instead of requiring that all settings of the control be saved, a few settings can be saved without considering the others. For example, if the grouping bar’s settings are not preferred to save, then the property “SerializeGrouping” of “SerializationOptions” can be set as false to ignore this during serialization, as illustrated in the following code sample.

using (var file = File.Create("PivotGrid.xml"))
{
    SerializationOptions options = new SerializationOptions();
    options.SerializeGrouping = false;
    this.pivotGridControl1.Serialize(file, options);
}

The following chart lists the properties that can be used to ignore required settings during serialization.

Property Usage
SerializeSorting To specify whether sorted items need to be serialized or not.
SerializeFiltering To specify whether filtered items need to be serialized or not.
SerializeGrouping To specify whether grouping bar need to be serialized or not.
SerializePivotRows To specify whether pivot row items need to be serialized or not.
SerializePivotColumns To specify whether pivot column items need to be serialized or not.
SerializePivotCalculations To specify whether pivot calculation items need to be serialized or not.
SerializeConditionalFormats To specify whether conditional formats need to be serialized or not.
SerializeExpandCollapseState To specify whether expand and collapse states need to be serialized or not.

Deserializing Pivot Grid

The pivot grid control allows loading saved settings using predefined methods. Let’s see what approaches are available for deserializing the control in the immediate sections.

Deserialize using open file dialog

Using the Deserialize() method, the settings of the pivot grid control can be restored by selecting the previously saved XML document using the open file dialog.

this.pivotGridControl1.Deserialize();

Deserialize using specific file

Using the Deserialize(string filename) method, the settings of the pivot grid control can be loaded from the specified XML document.

this.pivotGridControl1.Deserialize("PivotGrid.xml");

Deserialize using stream

Using the Deserialize(Stream stream) method, the settings of the pivot grid control can be loaded from the specified file stream.

using (FileStream fileStream = File.OpenRead("PivotGrid.xml"))
{
    this.pivotGridControl1.Deserialize(fileStream);
}

Deserialize from XML string

Using the DeserializeFromXml(string xmlString) method, the control settings stored in the XML string can be loaded into the pivot grid contol.

this.pivotGridControl1.DeserializeFromXml(xmlString);

Customizing deserialization

By default, all settings available in the stream are loaded into the pivot grid control. But the desired settings alone can be loaded by ignoring the rest settings. For example, if the grouping bar’s settings are not desired to load in the pivot grid control, then the property “DeserializeGrouping” of “DeserializationOptions” must be set as false to ignore it during deserialization, as illustrated in the following code sample.

using (FileStream fileStream = File.OpenRead("PivotGrid.xml"))
{
    Deserialization­­­­Options options = new DeserializationOptions();
    options.DeserializeGrouping = false;
    this.pivotGridControl1.Deserialize(fileStream, options);
}

The following are the properties that can be used to ignore required settings during deserialization.

Property Usage
DeserializeSorting To specify whether sorted items need to be serialized or not.
DeserializeFiltering To specify whether filtered items need to be serialized or not.
DeserializeGrouping To specify whether grouping bar need to be serialized or not.
DeserializePivotRows To specify whether pivot row items need to be serialized or not.
DeserializePivotColumns To specify whether pivot column items need to be serialized or not.
DeserializePivotCalculations To specify whether pivot calculation items need to be serialized or not.
DeserializeConditionalFormats To specify whether conditional formats need to be serialized or not.
SerializeExpandCollapseState To specify whether expand and collapse states need to be serialized or not.

Serialization and deserialization result in storage and usage of reports anywhere, at any time. In addition to this, the customization options would reduce the amount of serialized and deserialized data during the storage and retrieval process, thus optimizing the performance.

Reference

A sample has been created to demonstrate the serialization and deserialization support in the pivot grid control by customizing its options. Please try the sample and let us know what you think through the comments below.

Tags:

Share this post:

Related Posts

Leave a comment