Example #1
0
        private void OnAfterDataSetReset(DataSetResetEventArgs e)
        {
            var handler = AfterDataSetReset;

            if (handler != null)
            {
                handler(this, e);
            }
        }
Example #2
0
        private void OnBeforeDataSetReset(DataSetResetEventArgs e)
        {
            var handler = BeforeDataSetReset;

            if (handler != null)
            {
                handler(this, e);
            }
        }
Example #3
0
        private void BuildItems(IList <WordDocItemDef> items, DocX document, Paragraph p = null)
        {
            foreach (var item in items)
            {
                var tableDef = item as WordTableDef;
                if (tableDef != null && tableDef.Sections.Count >= 0 && tableDef.GetColCount() >= 0)
                {
                    BuildTable(tableDef, document);
                }
                else if (item is WordParagraphDef)
                {
                    var paraDef  = (WordParagraphDef)item;
                    var oldStyle = MergeStyle(paraDef.Style);
                    try
                    {
//                        var format = GetFormatting();
                        var para = AppendParagraph(document /*.InsertParagraph()*/);
                        foreach (var paraItem in paraDef.Items)
                        {
                            if (paraItem is WordContentItemDef)
                            {
                                AddParagraphContent(para, (WordContentItemDef)paraItem);
                            }
                            else if (paraItem is WordRepeatSectionDef)
                            {
                                var repeatSection = (WordRepeatSectionDef)paraItem;
                                if (repeatSection.ResetDatas)
                                {
                                    var args = new DataSetResetEventArgs {
                                        DataSet = repeatSection.Datas
                                    };
                                    OnBeforeDataSetReset(args);
                                    repeatSection.Datas.Reset();
                                    OnAfterDataSetReset(args);
                                }

                                while (!repeatSection.Datas.Eof())
                                {
                                    BuildItems(repeatSection.Items, document, para);
                                    repeatSection.Datas.Next();
                                }
                            }
                            else if (paraItem is WordSectionDef)
                            {
                                BuildItems(((WordSectionDef)paraItem).Items, document, para);
                            }
                        }
                    }
                    finally
                    {
                        SetStyle(oldStyle);
                    }
                }
                else if (item is WordRepeatSectionDef)
                {
                    var repeatSection = (WordRepeatSectionDef)item;
                    var oldStyle      = MergeStyle(item.Style);
                    try
                    {
                        if (repeatSection.ResetDatas)
                        {
                            var args = new DataSetResetEventArgs {
                                DataSet = repeatSection.Datas
                            };
                            OnBeforeDataSetReset(args);
                            repeatSection.Datas.Reset();
                            OnAfterDataSetReset(args);
                        }

                        while (!repeatSection.Datas.Eof())
                        {
                            BuildItems(repeatSection.Items, document, p);
                            repeatSection.Datas.Next();
                        }
                    }
                    finally
                    {
                        SetStyle(oldStyle);
                    }
                }
                else if (item is WordSectionDef)
                {
                    BuildItems(((WordSectionDef)item).Items, document, p);
                }
                else if (item is PageBreak)
                {
                    var pageBreak = (PageBreak)item;
                    int step;
                    if (!_pageBreakSteps.TryGetValue(pageBreak, out step))
                    {
                        step = pageBreak.Step;
                        _pageBreakSteps[pageBreak] = step;
                    }
                    step--;
                    if (step <= 0)
                    {
                        document.InsertSectionPageBreak();
                        _pageBreakSteps[pageBreak] = pageBreak.Step;
                    }
                }
                else if (item is WordContentItemDef)
                {
                    if (p == null)
                    {
                        p = AppendParagraph(document);
                    }
                    AddParagraphContent(p, (WordContentItemDef)item);
                }
            }
        }
Example #4
0
        private void BuildTable(WordTableDef tableDef, DocX document)
        {
            var oldStyle = MergeStyle(tableDef.Style);

            try
            {
                var table = document.InsertTable(1 /*tableDef.GetRowCount() + 1*/, tableDef.GetColCount());
                if (_style.HasBorders && _style.Borders == TableCellBorder.All)
                {
                    table.Design = TableDesign.TableGrid;
                }
                else
                {
                    table.Design = TableDesign.TableNormal;
                }
                table.AutoFit = tableDef.FitWidth ? AutoFit.Window : AutoFit.Contents;
                var firstRow = true;

                foreach (var sectionDef in tableDef.Sections)
                {
                    var def = sectionDef as WordTableRepeatSectionDef;
                    if (def != null)
                    {
                        var repeatSection   = def;
                        var oldSectionStyle = MergeStyle(def.Style);
                        try
                        {
                            if (repeatSection.ResetDatas)
                            {
                                var args = new DataSetResetEventArgs {
                                    DataSet = repeatSection.Datas
                                };
                                OnBeforeDataSetReset(args);
                                repeatSection.Datas.Reset();
                                OnAfterDataSetReset(args);
                            }

                            while (!repeatSection.Datas.Eof())
                            {
                                BuildTableSectionRows(def, table, tableDef, ref firstRow);
                                repeatSection.Datas.Next();
                            }
                        }
                        finally
                        {
                            SetStyle(oldSectionStyle);
                        }
                    }
                    else
                    {
                        var oldSectionStyle = MergeStyle(sectionDef.Style);
                        try
                        {
                            BuildTableSectionRows(sectionDef, table, tableDef, ref firstRow);
                        }
                        finally
                        {
                            SetStyle(oldSectionStyle);
                        }
                    }
//                for (var r = 0; r <= tableDef.GetRowCount(); r++)
                }
            }
            finally
            {
                SetStyle(oldStyle);
            }
        }