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); }
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; } } } }