private void GetDetailEntity(string entityName, Guid id, string subType, Guid tenantId, DataTable result) { var detailEntities = _iILayoutManager.GetDetailEntitiesFromDefaultLayoutForEntity(tenantId, entityName, (int)LayoutType.Form, subType, (int)LayoutContext.Edit); if (detailEntities != null && detailEntities.Any()) { foreach (var detail in detailEntities) { Guid targetId = Guid.Parse(detail.Value); //value from selected view.. var viewLayout = _iILayoutManager.GetLayoutsDetailsById(tenantId, targetId); var fields = string.Empty; if (viewLayout != null && viewLayout.ViewLayoutDetails != null && viewLayout.ViewLayoutDetails.Fields.Any()) { foreach (var item in viewLayout.ViewLayoutDetails.Fields) { fields += item.Name + ","; } fields = fields.TrimEnd(','); } if (fields == string.Empty) { continue; } var relatedColumn = _iMetadataManager.GetRelatedColumnNameOfDetailEntity(entityName, detail.Key); var filters = new List <QueryFilter> (); if (relatedColumn != null) { var queryFilter = new QueryFilter(); queryFilter.FieldName = relatedColumn.FieldName; queryFilter.Operator = "="; queryFilter.Value = id.ToString(); filters.Add(queryFilter); } var queryContext = new QueryContext { Fields = fields, Filters = filters, PageSize = 10, PageIndex = 1 }; var detailEntity = _iEntityResourceManager.GetResult(tenantId, detail.Key, queryContext); if (detailEntity == null || detailEntity.Rows.Count <= 0) { continue; } dynamic detailEntityRowCount = detailEntity.Rows[0]["totalRow"]; //newly introduced columns result.Columns.Add(detail.Key, typeof(DataTable)); result.Columns.Add(detail.Key + "Count", typeof(int)); // add value to newly introduced columns foreach (DataRow row in result.Rows) { row[detail.Key] = detailEntity; row[detail.Key + "Count"] = detailEntityRowCount; } ApiHelper.MapDynamicColumn(detailEntity.Columns); } } }