internal override void Render(Rdl.Render.Container box, Rdl.Runtime.Context context) { if (_staticRows.Count > FindMatrix(this).Rows.Count) { throw new Exception("There are more static row elements defined in matrix " + FindMatrix(this).Name + " than there are data rows."); } Rdl.Render.FlowContainer contentBox = null; if (box != null) { contentBox = box.AddFlowContainer(this, Style, context, Rdl.Render.FlowContainer.FlowDirectionEnum.TopDown); contentBox.Name = "StaticRowContent"; contentBox.Width = Width.points; contentBox.MatchParentWidth = true; contentBox.CanGrowVertically = true; } for (int i = 0; i < _staticRows.Count; i++) { Rdl.Render.FixedContainer cellBox = null; if (contentBox != null) { cellBox = contentBox.AddFixedContainer(this, Style, context); cellBox.Name = "StaticRowCell"; cellBox.Height = FindMatrix(this).Rows[i].Height.points; cellBox.MatchParentWidth = true; } ReportItems item = _staticRows[i]; item.Render(cellBox, context); } if (RenderNext != null) { if (RenderNext is ColumnGrouping) { ((ColumnGrouping)RenderNext).Render(box, FindMatrix(this).Context, context, 0); } else { RenderNext.Render(box, context); } } }
internal override int Render(Rdl.Render.Container box, Rdl.Runtime.Context context, Rdl.Runtime.Context rowContext, int column) { if (_staticColumns.Count > FindMatrix(this).Columns.Count) { throw new Exception("There are more static column elements defined in matrix " + FindMatrix(this).Name + " than there are data columns."); } if (RenderNext != null) { if (RenderNext is ColumnGrouping) { column = ((ColumnGrouping)RenderNext).Render(box, context, rowContext, column); } else { RenderNext.Render(box, context.Intersect(rowContext)); column++; } } return(column); }
internal override void Render(Rdl.Render.Container box, Rdl.Runtime.Context context) { Rdl.Runtime.Context context1 = context.GetChildContext( null, null, _grouping, _sorting); base.Render(box, context1); bool hidden = false; if (_visibility != null && _visibility.ToggleItem == null) { hidden = _visibility.IsHidden(context1); } if (!hidden) { TextBox tb = Report.FindToggleItem(_visibility); Rdl.Render.FlowContainer dynamicRowsBox = null; if (box != null) { // The dynamic rows box is a top down box holding all of the rows // in the matrix including the total row. dynamicRowsBox = box.AddFlowContainer(this, Style, context, Rdl.Render.FlowContainer.FlowDirectionEnum.TopDown); dynamicRowsBox.MatchParentWidth = true; dynamicRowsBox.Name = "DynamicRows"; } if ((_subtotal != null && _subtotal.Position == Subtotal.PositionEnum.Before) || (tb != null && _subtotal == null)) { RenderSubtotal(dynamicRowsBox, context, hidden, (_subtotal == null) ? tb : null); } while (context1.GroupIndex < context1.GroupCount) { Rdl.Render.FlowContainer rowGroupBox = dynamicRowsBox.AddFlowContainer(this, Style, context1, Rdl.Render.FlowContainer.FlowDirectionEnum.LeftToRight); rowGroupBox.Name = "DynamicRow"; if (tb != null) { tb.LinkedToggles.Add(new Toggle(rowGroupBox, tb)); } Rdl.Render.FixedContainer rowGroupHeader = rowGroupBox.AddFixedContainer(this, Style, context1); rowGroupHeader.Name = "DynamicRowHeader"; rowGroupHeader.Width = Width.points; rowGroupHeader.MatchParentHeight = true; //rowGroupHeader.Height = FindMatrix(this).Rows.Height; rowGroupHeader.CanGrowHorizonally = false; _reportItems.Render(rowGroupHeader, context1); if (RenderNext != null) { if (RenderNext is RowGrouping) { //Rdl.Render.FlowContainer contentBox = rowGroupBox.AddFlowContainer(this, Style, context1, Rdl.Render.FlowContainer.FlowDirectionEnum.TopDown); //contentBox.Name = "DynamicRowContent"; ((RowGrouping)RenderNext).Render(rowGroupBox, context1); } else if (RenderNext is ColumnGrouping) { ((ColumnGrouping)RenderNext).Render(rowGroupBox, FindMatrix(this).Context, context1, 0); } else { RenderNext.Render(rowGroupBox, context1); } //// Intersect the rows in the current column grouping with the rows in the //// row grouping and if there is anything left then render the //// MatrixRows. //Rdl.Runtime.Context tmpContext = context1.Intersect(columnContext); } context1.LinkToggles(); context1.NextGroup(); } if (_subtotal != null && _subtotal.Position == Subtotal.PositionEnum.After) { RenderSubtotal(box, context, hidden, null); } } }
internal override int Render(Rdl.Render.Container box, Rdl.Runtime.Context context, Rdl.Runtime.Context rowContext, int column) { Rdl.Runtime.Context context1 = context.GetChildContext(null, null, _grouping, _sorting); bool hidden = false; if (_visibility != null && _visibility.ToggleItem == null) { hidden = _visibility.IsHidden(context1); } if (!hidden) { TextBox tb = Report.FindToggleItem(_visibility); if ((_subtotal != null && _subtotal.Position == Subtotal.PositionEnum.Before) || (tb != null && _subtotal == null)) { column = RenderSubtotal(box, context.Intersect(rowContext), hidden, (_subtotal == null) ? tb : null, column); } Rdl.Render.FlowContainer groupBox = null; if (box != null) { groupBox = box.AddFlowContainer(this, Style, context1, Rdl.Render.FlowContainer.FlowDirectionEnum.LeftToRight); groupBox.Name = "DynamicColumnGroup"; groupBox.MatchParentHeight = true; } while (context1.GroupIndex < context1.GroupCount) { Rdl.Render.FixedContainer groupEntryBox = null; if (groupBox != null) { groupEntryBox = groupBox.AddFixedContainer(this, Style, context1); groupEntryBox.MatchParentHeight = true; if (tb != null) { tb.LinkedToggles.Add(new Toggle(groupEntryBox, tb)); } } // Put the column header text boxes into the column context and // set the text element for any textboxes in the header of the column so that // cells toggled on the header columns link to the correct boxes. if (_headerTextElements.ContainsKey(column)) { foreach (Rdl.Render.TextElement te in _headerTextElements[column]) { context1.TextBoxes[((TextBox)te.ReportElement).Name] = (TextBox)te.ReportElement; ((TextBox)te.ReportElement).Box = te; } } // Render the details. if (RenderNext != null) { if (RenderNext is ColumnGrouping) { column = ((ColumnGrouping)RenderNext).Render(groupEntryBox, context1, rowContext, column); } else { groupBox.Height = FindMatrix(this).Rows.Height; RenderNext.Render(groupEntryBox, context1.Intersect(rowContext)); column++; } } // Link the toggles at this context level with the linked elements contained. context1.LinkToggles(); context1.NextGroup(); } if (_subtotal != null && _subtotal.Position == Subtotal.PositionEnum.After) { column = RenderSubtotal(box, context.Intersect(rowContext), hidden, null, column); } } return(column); }