예제 #1
0
 private static KeepWithGroup DetermineKeepWithGroup(bool isHeader, TableHeaderFooterRows rows, bool noKeepWith)
 {
     if (noKeepWith || rows == null || !rows.RepeatOnNewPage)
     {
         return(KeepWithGroup.None);
     }
     if (isHeader)
     {
         return(KeepWithGroup.After);
     }
     return(KeepWithGroup.Before);
 }
예제 #2
0
 private void CreateHeaderFooter(List <ShimTableMember> rowGroups, TableHeaderFooterRows headerFooterRows, KeepWithGroup keepWithGroup, Tablix owner, ShimTableMember parent, bool isFixedTableHeader)
 {
     if (headerFooterRows != null)
     {
         int count = headerFooterRows.Count;
         int num   = rowGroups.Count;
         for (int i = 0; i < count; i++)
         {
             rowGroups.Add(new ShimTableMember(this, owner, parent, num, headerFooterRows[i], keepWithGroup, isFixedTableHeader));
             num++;
         }
     }
 }
예제 #3
0
 internal void UpdateHeaderFooter(TableHeaderFooterRows headerRows, TableHeaderFooterRows footerRows)
 {
     if (m_children != null && (headerRows != null || footerRows != null))
     {
         int num  = headerRows?.Count ?? 0;
         int num2 = footerRows?.Count ?? 0;
         int num3 = m_children.Length;
         for (int i = 0; i < num; i++)
         {
             ((ShimTableMember)m_children[i]).UpdateRow(headerRows[i]);
         }
         for (int num4 = num2; num4 > 0; num4--)
         {
             ((ShimTableMember)m_children[num3 - num4]).UpdateRow(footerRows[num2 - num4]);
         }
     }
 }
예제 #4
0
 public void UpdateHeaderFooter(TableHeaderFooterRows headerRows, TableHeaderFooterRows footerRows)
 {
     if (base.m_children != null)
     {
         if (headerRows == null && footerRows == null)
         {
             return;
         }
         int num  = (headerRows != null) ? headerRows.Count : 0;
         int num2 = (footerRows != null) ? footerRows.Count : 0;
         int num3 = base.m_children.Length;
         for (int i = 0; i < num; i++)
         {
             ((ShimTableMember)base.m_children[i]).UpdateRow(((TableRowCollection)headerRows)[i]);
         }
         for (int num4 = num2; num4 > 0; num4--)
         {
             ((ShimTableMember)base.m_children[num3 - num4]).UpdateRow(((TableRowCollection)footerRows)[num2 - num4]);
         }
     }
 }
예제 #5
0
        private TablixMember[] CreateInnerHierarchy(Tablix owner, ShimTableMember parent, TableHeaderFooterRows headerRows, TableHeaderFooterRows footerRows, TableGroupCollection subGroups, TableRowsCollection detailRows, ref int dynamicSubgroupChildIndex)
        {
            List <ShimTableMember> list = new List <ShimTableMember>();
            bool noKeepWith             = subGroups == null && detailRows == null;

            CreateHeaderFooter(list, headerRows, DetermineKeepWithGroup(isHeader: true, headerRows, noKeepWith), owner, parent, parent == null && owner.RenderTable.FixedHeader);
            if (subGroups != null)
            {
                dynamicSubgroupChildIndex = list.Count;
                CreateInnerDynamicGroups(list, subGroups, owner, parent);
            }
            else if (detailRows != null)
            {
                dynamicSubgroupChildIndex = list.Count;
                list.Add(new ShimTableMember(this, owner, parent, dynamicSubgroupChildIndex, detailRows));
            }
            CreateHeaderFooter(list, footerRows, DetermineKeepWithGroup(isHeader: false, footerRows, noKeepWith), owner, parent, isFixedTableHeader: false);
            return(list.ToArray());
        }