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")) { DeserializationOptions 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. |
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.