Creating Hierarchical View in C1TrueDbGrid at runtime has always been a tough ask for the customers. This blog provides step by step implementation of the same with the help of two C1TrueDbGrids**; one being the Master/ Parent grid and other being the Child grid which appears when we expand the record in the Master grid. First of all establish a connection** with the Database wherein the DataTables lies and then populate the DataSet with two set of Tables from the Database.

//Adding tables to dataset  
_dataSet = new DataSet("myData");  
_dataSet.Tables.Add("myCustomers");  
_dataSet.Tables.Add("myOrders");  

//Populating tables with data  
_dataAdapter = new System.Data.OleDb.OleDbDataAdapter("Select * from Customers", myConnection);  
\_dataAdapter.Fill(\_dataSet.Tables["myCustomers"]);  
_dataAdapter.Dispose();  

_dataAdapter = new System.Data.OleDb.OleDbDataAdapter("Select * from Orders", myConnection);  
\_dataAdapter.Fill(\_dataSet.Tables["myOrders"]);  
_dataAdapter.Dispose();

Create the relationship between two tables in the DataSet using Relations.Add() method of the DataSet.

// Creating relation between two tables  
\_dataSet.Relations.Add("Customers\_Orders\_rel", \_dataSet.Tables["myCustomers"].Columns["CustomerID"], _dataSet.Tables["myOrders"].Columns["CustomerID"]);

Now the important step is to assign the correct DataSource to the Parent and Child grids. Assign the DataSet object to the DataSource property for both the grids. Now , you need to set the **DataMember property of the Master and Child grid** respectively wherein the DataMember of the Master grid is the name of the Parent table and DataMember for Child grid is the Relation name . However, while assigning the Relation name in Child grid it has to be assigned prefixed with the name of the Parent table followed by '.'.

C1TrueDBGridMaster.DataSource = _dataSet;  
// DataMember of MasterTable  
C1TrueDBGridMaster.DataMember = "myCustomers";  
C1TrueDBGridMaster.Visible = true;  

C1TrueDBGridChild.DataSource = _dataSet;  
// DataMember of ChildTable  
C1TrueDBGridChild.DataMember = "myCustomers.Customers\_Orders\_rel";  

C1TrueDBGridMaster.ChildGrid = C1TrueDBGridChild;

Refer to the attached samples for complete implementation. DownloadSample_CS DownloadSample_VB