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");
            }
        }
Esempio n. 2
0
        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;
        }