vcl-dxbackend-dot-connectionstring-dot-json-4c834d3c.md
The base class for JSON-based data connection components (TdxBackendInMemoryJSONConnection and TdxBackendDataSetJSONConnection).
TdxBackendCustomInMemoryJSONConnection = class abstract(TdxBackendCustomDataConnection)
Data connection components allow you to bind TdxDashboard/TdxDashboardControl and TdxReport components to data.
The list below outlines key members of the TdxBackendCustomInMemoryJSONConnection class. These members allow you to configure core data connection settings.
ActiveSpecifies if the data connection is active.DisplayName
Specifies the data connection’s name in the 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.
Specifies a connection string (or stores serialized data in the JSON format).
Tip
Refer to the following topic for detailed information on JSON Data: Connection to a JSON Data Source.
SetJSONValueSets component data to the specified JSON value.
Collection | IndexSpecify the parent collection component.
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;
#include "dxDashboard.Control.hpp" // Declares the TdxDashboardControl component
#include "dxBackend.ConnectionString.JSON.hpp" // Declares the TdxBackendInMemoryJSONConnection component
// Add the following linker directives to the corresponding CPP source file:
#pragma link "dxDashboard.Control" // Required to use dxDashboard.Control.hpp declarations
#if defined(_WIN64) // Required to use dxBackend.ConnectionString.JSON.hpp declarations
#pragma link "dxBackend.ConnectionString.JSON.o"
#else
#pragma link "dxBackend.ConnectionString.JSON.obj"
#endif
// ...
void __fastcall TMyForm::cxDisplayDesignerButtonClick(TObject *Sender)
{
// 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=\"\""
L"[{\"id\": 1, \"Region\": \"Asia\", \"Sales\": 1.9576}," // Row #1
L"{\"id\": 2, \"Region\": \"Australia\", \"Sales\": 1.9576}," // Row #2
L"{\"id\": 3, \"Region\": \"Europe\", \"Sales\": 3.3579}," // Row #3
L"{\"id\": 4, \"Region\": \"North America\", \"Sales\": 3.7477}," // Row #4
L"{\"id\": 5, \"Region\": \"South America\", \"Sales\": 1.8237}]\"\"" // Row #5
dxDashboardControl1->ShowDesigner(); // Displays the "Dashboard Designer" dialog
}
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;
#include "dxDashboard.Control.hpp" // Declares the TdxDashboardControl component
#include "dxBackend.ConnectionString.JSON.hpp" // Declares the TdxBackendInMemoryJSONConnection component
// Add the following linker directives to the corresponding CPP source file:
#pragma link "dxDashboard.Control" // Required to use dxDashboard.Control.hpp declarations
#if defined(_WIN64) // Required to use dxBackend.ConnectionString.JSON.hpp declarations
#pragma link "dxBackend.ConnectionString.JSON.o"
#else
#pragma link "dxBackend.ConnectionString.JSON.obj"
#endif
// ...
void __fastcall TMyForm::cxDisplayDesignerButtonClick(TObject *Sender)
{
// Define a table that consists of three columns ("id", "Region", and "Sales") and five data rows:
UnicodeString AJSONData =
L"[{\"id\": 1, \"Region\": \"Asia\", \"Sales\": 1.9576}," // Row #1
L"{\"id\": 2, \"Region\": \"Australia\", \"Sales\": 1.9576}," // Row #2
L"{\"id\": 3, \"Region\": \"Europe\", \"Sales\": 3.3579}," // Row #3
L"{\"id\": 4, \"Region\": \"North America\", \"Sales\": 3.7477}," // Row #4
L"{\"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 Source";
dxBackendInMemoryJSONConnection1->SetJSONValue(AJSONData); // Assigns the defined JSON data string
dxDashboardControl1->ShowDesigner(); // Displays the "Dashboard Designer" dialog
}
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;
#include "dxDashboard.Control.hpp" // Declares the TdxDashboardControl component
#include "dxBackend.ConnectionString.JSON.hpp" // Declares the TdxBackendInMemoryJSONConnection component
// Add the following linker directives to the corresponding CPP source file:
#pragma link "dxDashboard.Control" // Required to use dxDashboard.Control.hpp declarations
#if defined(_WIN64) // Required to use dxBackend.ConnectionString.JSON.hpp declarations
#pragma link "dxBackend.ConnectionString.JSON.o"
#else
#pragma link "dxBackend.ConnectionString.JSON.obj"
#endif
// ...
void __fastcall TMyForm::cxDisplayDesignerButtonClick(TObject *Sender)
{
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 =
L"Uri=https://northwind.netcore.io/customers.json;" // Specifies the path to a source JSON file
L"Username=user;" // Specifies a valid user name
L"Password=pwd;" // Specifies the corresponding password for the user name
L"MyAuthHeader1=secretToken1;MyAuthHeader2=secretToken2;" // Specifies authentication tokens
L"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
}
Do not use the TdxBackendCustomInMemoryJSONConnection class directly. Use the following components instead:
TdxBackendInMemoryJSONConnectionA component designed for interaction with data stored in memory.TdxBackendDataSetJSONConnectionA component designed to fetch data from one or multiple datasets (TDataSet descendant instances).
TObject TPersistent TComponent TcxCustomComponent TcxComponentCollectionItem TdxBackendCustomDataConnection TdxBackendCustomInMemoryJSONConnection
See Also
TdxBackendDatabaseSQLConnection Class
TdxBackendDataConnectionManager Class