private static void RenderRows_FromDataTable(RenderContext ctx) { var data = (DataTable)ctx.Rows; foreach (DataRow row in data.Rows) { var rowEntity = new Entity(); rowEntity.Class = KnownClasses.Row; rowEntity.Rel = KnownRelations.Row; rowEntity.Properties = new Media.PropertyCollection(); foreach (DataColumn col in data.Columns) { var value = row[col]; if (value != null) { var name = Conventions.MakeFieldName(col); rowEntity.Properties.Add(name, value); } } ctx.Entity.Entities.Add(rowEntity); LinkRenderer.RenderRowLinks(ctx, rowEntity, row); } ctx.Entity.Properties.Add("_rowCount", data.Rows.Count); }
static PropertyInfo[] RenderRows_FromEnumerable(RenderContext ctx) { var data = ((IEnumerable)ctx.Rows).Cast <object>(); var allProperties = new List <PropertyInfo>(); var count = 0; foreach (var row in data) { var rowEntity = new Entity(); rowEntity.Class = new NameCollection(); rowEntity.Class.Add(KnownClasses.Row); var entityClass = Conventions.MakeClassName(row); if (entityClass != null) { rowEntity.Class.Add(entityClass); } rowEntity.Rel = KnownRelations.Row; rowEntity.Properties = new Media.PropertyCollection(); var properties = row.GetType().GetProperties(); foreach (var property in properties) { if (!allProperties.Contains(property)) { allProperties.Add(property); } var value = property.GetValue(row); if (value != null) { var name = Conventions.MakeFieldName(property.Name); rowEntity.Properties.Add(name, value); } } LinkRenderer.RenderRowLinks(ctx, rowEntity, row); ctx.Entity.Entities.Add(rowEntity); count++; } ctx.Entity.Properties.Add("_rowCount", count); var knownProperties = ( from property in allProperties let name = Conventions.MakeFieldName(property.Name) group property by name into g select g.First() ).ToArray(); return(knownProperties); }
public static void RenderData(RenderContext ctx) { if (!ctx.Query.HasMethod("GetData")) { return; } if (ctx.Entity.Class == null) { ctx.Entity.Class = new NameCollection(); } if (ctx.Entity.Properties == null) { ctx.Entity.Properties = new Media.PropertyCollection(); } ctx.Entity.Class.AddAt(0, KnownClasses.Data); var type = GetDataType(ctx); if (type == typeof(DataTable)) { RenderData_FromDataTable(ctx); InferDataHeaders_FromDataTable(ctx); var data = (DataTable)ctx.Data; var row = data?.Rows.Cast <DataRow>().FirstOrDefault(); if (row != null) { LinkRenderer.RenderDataLinks(ctx, row); } } else { RenderData_FromObject(ctx); InferDataHeaders_FromObject(ctx); if (ctx.Data != null) { LinkRenderer.RenderDataLinks(ctx, ctx.Data); } } UpdateDataHeaders(ctx); }
public static void RenderLinks(RenderContext ctx) { LinkRenderer.RenderLinks(ctx); }