コード例 #1
0
        void ControlTreeDataLoader.LoadData()
        {
            FormState.ExecuteWithDataModificationsAndDefaultAction(
                dataModifications,
                () => {
                var table = new DynamicTable {
                    IsStandard = false
                };

                var controls = codeControls;
                if (HideIfEmpty && controls.Count == 0)
                {
                    Visible = false;
                    return;
                }
                var firstPassThroughRowLoop = true;
                for (var i = 0; i < controls.Count; i += NumberOfColumns)
                {
                    // spacer row
                    if (!firstPassThroughRowLoop)
                    {
                        var spacerRowCount = SpacerCellSetup.RowSpacerCellCreator().Count;
                        for (var spacerRowIndex = 0; spacerRowIndex < spacerRowCount; spacerRowIndex += 1)
                        {
                            var firstPassThroughSpacerRowColumnLoop = true;
                            var spacerRowCells = new List <EwfTableCell>();
                            for (var spacerRowColumnIndex = 0; spacerRowColumnIndex < NumberOfColumns; spacerRowColumnIndex += 1)
                            {
                                if (!firstPassThroughSpacerRowColumnLoop)
                                {
                                    spacerRowCells.AddRange(SpacerCellSetup.RowAndColumnSpacerCellCreator()[spacerRowIndex]);
                                }
                                spacerRowCells.Add(SpacerCellSetup.RowSpacerCellCreator()[spacerRowIndex]);
                                firstPassThroughSpacerRowColumnLoop = false;
                            }
                            table.AddRow(spacerRowCells.ToArray());
                        }
                    }

                    // content row
                    var firstPassThroughColumnLoop = true;
                    var cells = new List <EwfTableCell>();
                    for (var columnIndex = 0; columnIndex < NumberOfColumns; columnIndex += 1)
                    {
                        // spacer cells
                        if (!firstPassThroughColumnLoop)
                        {
                            cells.AddRange(SpacerCellSetup.ColumnSpacerCellCreator());
                        }

                        // content cell

                        if (firstPassThroughRowLoop && CaptionControl != null)
                        {
                            cells.Add(CaptionControl);
                            i -= NumberOfColumns;
                        }
                        else
                        {
                            var controlIndex = i + columnIndex;
                            if (controlIndex < controls.Count)
                            {
                                cells.Add(controls[controlIndex]);
                            }
                            else
                            {
                                cells.Add(EmptyCellCreator());
                            }
                        }
                        firstPassThroughColumnLoop = false;
                    }
                    table.AddRow(cells.ToArray());

                    firstPassThroughRowLoop = false;
                }

                Controls.Add(table);
            });
        }