TdxBackendInMemoryJSONConnection Class
A component designed for interaction with data stored in memory.
Declaration
TdxBackendInMemoryJSONConnection = class(
TdxBackendCustomInMemoryJSONConnection
)
Remarks
Data connection components allow you to bind TdxDashboard/TdxDashboardControl and TdxReport components to data.
Main API Members
The list below outlines key members of the TdxBackendInMemoryJSONConnection class. These members allow you to configure core data connection settings.
Data Connection Settings
- Active
- Specifies if the data connection is active.
- DisplayName
Specifies the data connection’s name both in report/UI layout template designer and Collection Editor dialogs.
The DisplayName property value is used to specify the data connection name within report/UI layout templates.
- ConnectionString
Specifies a connection string (or stores serialized data in the JSON format).
Tip
Refer to the following help topic for detailed information and step-by-step instructions: How to Use Memory-Based or Remote API Data Sources.
- SetJSONValue
- Sets component data to the specified JSON value.
General-Purpose API Members
- Collection | Index
- Specify the parent collection component.
Code Examples
Assign JSON Data as a Connection String
The following code example demonstrates an OnClick event handler that configures a TdxBackendInMemoryJSONConnection component, assigns a table defined within a JSON string to the ConnectionString property, and displays the Dashboard Designer dialog:
uses
dxDashboard.Control, // Declares the TdxDashboardControl component
dxBackend.ConnectionString.JSON; // Declares the TdxBackendInMemoryJSONConnection component
// ...
procedure TMyForm.cxDisplayDesignerButtonClick(Sender: TObject);
begin
// Specify a user-friendly data connection name (for end-user dialogs):
dxBackendInMemoryJSONConnection1.DisplayName := 'Memory-Based JSON Data Source';
// Define a table that consists of three columns ("id", "Region", and "Sales") and five data rows:
dxBackendInMemoryJSONConnection1.ConnectionString := 'Json=''' +
'[{"id": 1, "Region": "Asia", "Sales": 4.7685},' + // Row #1
'{"id": 2, "Region": "Australia", "Sales": 1.9576},' + // Row #2
'{"id": 3, "Region": "Europe", "Sales": 3.3579},' + // Row #3
'{"id": 4, "Region": "North America", "Sales": 3.7477},' + // Row #4
'{"id": 5, "Region": "South America", "Sales": 1.8237}]'''; // Row #5
dxDashboardControl1.ShowDesigner; // Displays the "Dashboard Designer" dialog
end;
Assign a JSON Data String Directly
The following code example demonstrates an OnClick event handler that calls the SetJSONValue procedure to assign a table defined within a JSON string to the TdxBackendInMemoryJSONConnection component and displays the Dashboard Designer dialog:
uses
dxDashboard.Control, // Declares the TdxDashboardControl component
dxBackend.ConnectionString.JSON; // Declares the TdxBackendInMemoryJSONConnection component
// ...
procedure TMyForm.cxDisplayDesignerButtonClick(Sender: TObject);
var
AJSONData: string;
begin
// Define a table that consists of three columns ("id", "Region", and "Sales") and five data rows:
AJSONData :=
'[{"id": 1, "Region": "Asia", "Sales": 4.7685},' + // Row #1
'{"id": 2, "Region": "Australia", "Sales": 1.9576},' + // Row #2
'{"id": 3, "Region": "Europe", "Sales": 3.3579},' + // Row #3
'{"id": 4, "Region": "North America", "Sales": 3.7477},' + // Row #4
'{"id": 5, "Region": "South America", "Sales": 1.8237}]'; // Row #5
// Specify a user-friendly data connection name (for end-user dialogs):
dxBackendInMemoryJSONConnection1.DisplayName := 'Memory-Based JSON Data Storage';
dxBackendInMemoryJSONConnection1.SetJSONValue(AJSONData); // Assigns the defined JSON data string
dxDashboardControl1.ShowDesigner; // Displays the Dashboard Designer dialog
end;
Load JSON Data from a Remote Source
The code example in this section demonstrates an OnClick event handler that configures a TdxBackendInMemoryJSONConnection component used to load JSON data from an external source using a connection string and displays the Dashboard Designer dialog.
Note
This code example demonstrates a sample connection string. You must replace specified parameter values with required URI, username, password, access tokens, etc.
uses
dxDashboard.Control, // Declares the TdxDashboardControl component
dxBackend.ConnectionString.JSON; // Declares the TdxBackendInMemoryJSONConnection component
// ...
procedure TMyForm::cxDisplayDesignerButtonClick(Sender: TObject);
begin
dxBackendInMemoryJSONConnection1.Active := False; // Terminates the current connection (if one exists)
// Specify a user-friendly data connection name (for end-user dialogs):
dxBackendInMemoryJSONConnection1.DisplayName := 'Memory-Based JSON Data Source';
dxBackendInMemoryJSONConnection1.ConnectionString :=
'Uri=https://northwind.netcore.io/customers.json;' + // Specifies the path to a source JSON file
'Username=user;' + // Specifies a valid user name
'Password=pwd;' + // Specifies the corresponding password for the user name
'MyAuthHeader1=secretToken1;MyAuthHeader2=secretToken2;' + // Specifies authentication tokens
'query:id=123456;query:name=MyName;' // Specifies the required query ID and name
dxBackendInMemoryJSONConnection1.Active := True; // Connects to the target Web service endpoint
dxDashboardControl1.ShowDesigner(); // Displays the "Dashboard Designer" dialog
end;
Generate and Export Report Content to PDF File
The following code example configures a memory-based data source (TdxBackendInMemoryJSONConnection), loads an XML layout, and exports generated content to a file in the Portable Document (PDF) format without user interaction:
uses
dxBackend.ConnectionString.JSON, // Declares the TdxBackendInMemoryJSONConnection component
dxReport; // Declares the TdxReport class
// ...
procedure TMyForm.cxButtonExportToPDFClick(Sender: TObject);
var
AReport: TdxReport;
AJSONDataConnection: TdxBackendInMemoryJSONConnection;
AMemoryStream: TMemoryStream;
AJSONData: string;
begin
// Define a table that consists of three columns ("id", "Region", and "Sales") and five data rows:
AJSONData :=
'[{"id": 1, "Region": "Asia", "Sales": 4.7685},' + // Row #1
'{"id": 2, "Region": "Australia", "Sales": 1.9576},' + // Row #2
'{"id": 3, "Region": "Europe", "Sales": 3.3579},' + // Row #3
'{"id": 4, "Region": "North America", "Sales": 3.7477},' + // Row #4
'{"id": 5, "Region": "South America", "Sales": 1.8237}]'; // Row #5
AJSONDataConnection := TdxBackendInMemoryJSONConnection.Create(Self); // Creates a data connection
try
AJSONDataConnection.Name := 'JSONData'; // Assigns a name to the created data connection
AJSONDataConnection.SetJSONValue(AJSONData); // Assigns the defined JSON data string
AReport := TdxReport.Create(Self); // Creates a TdxReport container
try
AReport.Layout.LoadFromFile('MyReportLayout.xml'); // Loads an XML Report layout
AReport.ReportName := 'MyReport'; // Defines a Report name
AMemoryStream := TMemoryStream.Create; // Creates a memory stream
try
// Export Report content to the created memory stream in the PDF format:
AReport.ExportToPDF(AMemoryStream);
AMemoryStream.SaveToFile(AReport.ReportName + '.pdf'); // Saves the resulting PDF file
finally
AMemoryStream.Free; // Releases the memory stream
end;
finally
AReport.Free; // Releases the TdxReport container
end;
finally
AJSONDataConnection.Free; // Releases the data connection
end;
end;
Indirect TdxBackendInMemoryJSONConnection Class References
The following public API members reference the TdxBackendInMemoryJSONConnection class as a TdxBackendCustomDataConnection object:
- TdxBackendDataConnectionCollection.Add
- Creates a data connection of the required type and ads the connection to the collection.
- TdxBackendDataConnectionCollection.Items
- Provides indexed access to all data connection components stored in the collection.
- TdxBackendDataConnectionManager.Items
- Provides indexed access to stored data connection components.
Other Data Connection Components
- TdxBackendDataSetJSONConnection
- A component designed to fetch data from one or multiple datasets (TDataSet descendant instances).
- TdxBackendDatabaseSQLConnection
- A non-visual component designed to fetch data from a relational database (SQL Server, PostgreSQL, SQLite, etc.).
Related Compiled Demos
To see TdxDashboardControl and TdxReport components in action, run BI Dashboards Designer/Viewer and Report Designer/Viewer demos in the VCL Demo Center installed with compiled DevExpress VCL demos. Click different items in the sidebar on the left to switch between demo features.
Tip
You can find full source code for installed compiled Report and Dashboard demos in the following folders:
- %PUBLIC%\Documents\DevExpress VCL Demos\MegaDemos\Product Demos\ExpressReports\
- %PUBLIC%\Documents\DevExpress VCL Demos\MegaDemos\Product Demos\ExpressDashboards\