JsonDataSource.Schema Property

Gets or sets the JsonDataSource's data schema.

Namespace: DevExpress.DataAccess.Json

Assembly: DevExpress.DataAccess.v20.1.dll

Declaration

[Browsable(false)]
[DefaultValue(null)]
public JsonSchemaNode Schema { get; set; }
<Browsable(False)>
<DefaultValue(Nothing)>
Public Property Schema As JsonSchemaNode

Property Value

Type Default Description
JsonSchemaNode

null

The data source schema's root node.

Remarks

Use this property to specify the data source schema. When the schema is specified, you can bind controls to data source fields.

If the Schema property is set to null (Nothing in Visual Basic), the Fill method call provides both the schema and data. The schema is generated based on the provided data. The SchemaDiscoveryMaxItemCount property specifies how many records to analyze in order to build the schema.

Customize the Schema property to build a custom data source schema:

  1. Create a JsonSchemaNode class instance and set its properties.
  2. Use the JsonSchemaNode.Children property to specify the collection of child nodes.
  3. Assign the root node instance to the Schema property.
NOTE

If you modify the schema after you called the Fill method, call this method again to apply changes to the data.

In the following code, the Customers node's schema is defined and added to the data source's root node.

root: {
    customers: [{
        CustomerID
        CompanyName
        ContactTitle
    }]
}
using DevExpress.DataAccess.Json;
        // ...
        public static JsonDataSource CreateDataSourceFromWeb() {
            var jsonDataSource = new JsonDataSource();
            // Specify the endpoint.
            jsonDataSource.JsonSource = new UriJsonSource(new Uri("http://northwind.servicestack.net/customers.json"));
            var root = new JsonSchemaNode();
            root.NodeType = JsonNodeType.Object;

            var customers = new JsonSchemaNode() {NodeType=JsonNodeType.Array, Name="Customers", Selected=true };
            customers.AddChildren(new[] {
                new JsonSchemaNode(new JsonNode("CustomerID", true, JsonNodeType.Property, typeof(string))) { DisplayName = "Customer ID" },
                new JsonSchemaNode() {
                    Name =  "CompanyName",
                    Selected = true,
                    NodeType = JsonNodeType.Property,
                    Type = typeof(string)
                },
                new JsonSchemaNode(new JsonNode("ContactTitle", true, JsonNodeType.Property, typeof(string))),
                new JsonSchemaNode(new JsonNode("Address", false, JsonNodeType.Property, typeof(string)))
            });

            root.AddChildren(customers);
            jsonDataSource.Schema = root;
            // Populate the data source with data.
            jsonDataSource.Fill();
            return jsonDataSource;
        }
See Also