Flexicious Ultimate supports hierarchical data display that is similar to the traditional Halo AdvancedDataGrid. We refer to this has "Homogenous Hierarchical Data", because you are primarily looking at a single set of columns that describe a single entity, just grouped by different attributes of that entity.

 

The Flexicious Ultimate supports this by utilizing a flag that marks the levels to indicate that they reuse the previous levels columns.  

 

From the docs:

 

reusePreviousLevelColumns: Setting this flag to true will resuse the columns from the previous level. Set this flag to true if you want the grid to behave like the advanced datagrid, where there is one set of columns for hierarchical data.

 

 

Now, this example brings up a few interesting issues: In this case we're still using a set of parent child entities to display a homogenous hierarchical grid. So, in essence, we are displaying a set of discrete entities using a same set of columns. For example, the Amount column could display either the Org Amount, the Deal Amount, Invoice Amount or the Line Item Amount. So what should be the dataField here? How do we sort? This is why we use a custom sort function amountSortCompareFunction, as well as a custom label function getInvoiceAmount.  Each of these basically checks to see what it is that we are trying to display and implements custom logic on basis of the entity type.

 

Another point of interest is that many times in scenarios like this, you only want a specific level of depth to be selectable. For example, if this screen was a "Print Invoice" screen, where you have them listed by Org and then deal, you only want the user to be able to select "Invoices". This is why we have the rowSelectableFunction. Basically, what we're saying is that, at the first two levels, the rows are not selectable, but they are selectable at the Invoice level.