private void BindActionedComponents(BindingActionList actions, PDFDataContext context) { if (context.TraceLog.ShouldLog(TraceLevel.Debug)) { context.TraceLog.Begin(TraceLevel.Debug, "PDFWithFieldSet", "Starting to bind " + actions.Count.ToString() + "components with their respective data items"); } var lastIndex = context.CurrentIndex; var index = 0; foreach (BindingAction action in actions) { context.CurrentIndex = index; context.DataStack.Push(action.Data, action.Source); action.Component.DataBind(context); context.DataStack.Pop(); index++; } if (context.TraceLog.ShouldLog(TraceLevel.Debug)) { context.TraceLog.End(TraceLevel.Debug, "PDFWithFieldSet", "Completed bound " + actions.Count.ToString() + "components with their respective data items"); } }
protected override void DoBindDataIntoContainer(IPDFContainerComponent container, int containerposition, PDFDataContext context) { IPDFDataSource origSource = context.DataStack.Source; object origData = context.DataStack.Pop(); object parentData = null; if (context.DataStack.HasData) { parentData = context.DataStack.Current; } Style applied = this.GetAppliedStyle(); applied = applied.Flatten(); IEnumerator enumerator = this.GetDataEnumerator(origData); if (this.AutoBindContent != DataAutoBindContent.None) { this.AddAutoBindColumns(context); } TableGrid grid = new TableGrid(); container.Content.Add(grid); if (this.HasStyle && this.Style.HasValues) { this.Style.MergeInto(grid.Style, Style.DirectStylePriority); } if (!string.IsNullOrEmpty(this.StyleClass)) { grid.StyleClass = this.StyleClass; } if (this.HasOutline) { grid.Outline = this.Outline; } this.ApplyCellStyles(); int colindex = 0; int rowindex = -1; this._bindingActions = new List <BindingActionList>(); if (this.ShouldBuildHeader()) { TableHeaderRow header = new TableHeaderRow(); grid.Rows.Add(header); BindingActionList headBind = new BindingActionList(); this.BindingActions.Add(headBind); //Add the columns foreach (DataGridColumn column in this.Columns) { if (column.Visible == false) { continue; } Component comp = column.DoBuildHeaderCell(grid, header, rowindex, colindex, context); if (null != comp && null != parentData) { headBind.Add(new BindingAction(parentData, origSource, comp)); } colindex++; } rowindex++; } while (enumerator.MoveNext()) { colindex = 0; TableRow row = new TableRow(); grid.Rows.Add(row); BindingActionList rowBind = new BindingActionList(); this.BindingActions.Add(rowBind); foreach (DataGridColumn column in this.Columns) { if (column.Visible == false) { continue; } Component comp = column.DoBuildItemCell(grid, row, rowindex, colindex, context); if (null != comp) { rowBind.Add(new BindingAction(enumerator.Current, origSource, comp)); } colindex++; } rowindex++; } colindex = 0; if (this.ShouldBuildFooter()) { TableFooterRow footer = new TableFooterRow(); grid.Rows.Add(footer); BindingActionList footBind = new BindingActionList(); this.BindingActions.Add(footBind); foreach (DataGridColumn column in this.Columns) { if (column.Visible == false) { continue; } Component comp = column.DoBuildFooterCell(grid, footer, rowindex, colindex, context); if (null != comp && null != parentData) { footBind.Add(new BindingAction(parentData, origSource, comp)); } colindex++; } } context.DataStack.Push(origData, origSource); this.InitAndLoadRoot(grid, context); this.BindActionedComponents(this.BindingActions, context); bool allhidden = RemoveHiddenColumns(context); if (allhidden || grid.Rows.Count == 0) { grid.Visible = false; this.ShowEmptyTemplate(container, containerposition, context); } this.RemoveHeadersAndFooters(grid, context); _built = grid; }