예제 #1
0
        private void ProcessStartForeachBookmark(PartBookmark bookmark, ref Relations relations)
        {
            int index        = _bookmarks.FindIndex(b => b.Key.Equals(bookmark.Key, System.StringComparison.OrdinalIgnoreCase));
            int foreachIndex = _foreach.Count + 1;

            //TODO:CHECK
            string variant = Core.MarkupConstant.XslVariableImage + index.ToString();

            InternalBookmarkDomain ibmDomain = _ibm.GetInternalBookmarkDomainByItemKey(bookmark.Key);

            relations = GetRelations(bookmark);

            ForeachItem foreachItem = new ForeachItem(index, _bookmarks, relations, ibmDomain.SelectedTables, foreachIndex, variant, string.Empty);

            _foreach.Add(foreachItem);
        }
예제 #2
0
        private void ReplaceBookmarkTag()
        {
            _foreach = new List <ForeachItem>();
            for (int index = 0; index < _textParser.Bookmarks.Count; index++)
            {
                PartBookmark  bookmark       = _textParser.Bookmarks[index];
                List <string> selectedTables = GetSelectedTables(bookmark);
                Relations     relations      = GetRelations(bookmark);
                if (!bookmark.IsDelete)
                {
                    string xslPath = string.Empty;
                    switch (bookmark.Type)
                    {
                    case Core.BookmarkType.EndForeach:
                        bookmark.XslString = Mht.XslContent.XslFormat.XslEndForeach;
                        if (_foreach.Count > 0)
                        {
                            _foreach.RemoveAt(_foreach.Count - 1);
                        }
                        UpdateBookmarkPart(bookmark);
                        break;

                    case Core.BookmarkType.EndIf:
                        bookmark.XslString = Mht.XslContent.XslFormat.XslEndIf;
                        UpdateBookmarkPart(bookmark);
                        break;

                    case Core.BookmarkType.Image:
                        break;

                    case Core.BookmarkType.Select:
                        xslPath            = GetXslPath(bookmark, bookmark.BizName, false, selectedTables, relations);
                        bookmark.XslString = Mht.XslContent.XslValueOfTag(xslPath, false);
                        UpdateBookmarkPart(bookmark);
                        break;

                    case Core.BookmarkType.StartIf:
                        xslPath            = GetXslPath(bookmark, bookmark.BizName, true, selectedTables, relations);
                        bookmark.XslString = Mht.XslContent.XslStartIfTag(xslPath, false);
                        UpdateBookmarkPart(bookmark);
                        break;

                    case Core.BookmarkType.StartForeach:
                        int    indexForeach = _foreach.Count + 1;
                        string variant      = Core.MarkupConstant.XslVariableImage + index.ToString();
                        InternalBookmarkDomain ibmDomain = _ibm.GetInternalBookmarkDomainByItemKey(bookmark.Key);
                        ForeachItem            fItem     = new ForeachItem(index, _textParser.Bookmarks.Cast <Base.BaseBookmark>(),
                                                                           relations, ibmDomain.SelectedTables,
                                                                           indexForeach, variant, string.Empty);
                        _foreach.Add(fItem);

                        xslPath = GetXslPath(bookmark, string.Empty, false, selectedTables, relations);
                        InternalBookmarkItem ibmItem = _ibm.GetInternalBookmarkItem(bookmark.Key);
                        string sort = GetSortXsl(bookmark.BizName, ibmItem.DomainName, selectedTables, relations, false);
                        bookmark.XslString = Mht.XslContent.XslStartForeachTag(xslPath,
                                                                               variant, Core.MarkupConstant.XslMultiPosition, sort, false);
                        fItem.XslString = bookmark.XslString;

                        UpdateBookmarkPart(bookmark);
                        break;

                    default:
                        break;
                    }
                }
            }
        }