コード例 #1
0
        private void LoadMatrix(XmlNode matrixNode)
        {
            component = ComponentsFactory.CreateMatrixObject(matrixNode.Attributes["Name"].Value, parent);
            MatrixObject matrix = component as MatrixObject;

            matrix.AutoSize = false;

            XmlNodeList nodeList = matrixNode.ChildNodes;

            LoadReportItem(nodeList);
            //XmlNode cornerNode = null;
            XmlNode columnGroupingsNode = null;
            XmlNode rowGroupingsNode    = null;
            XmlNode matrixRowsNode      = null;
            XmlNode matrixColumnsNode   = null;

            foreach (XmlNode node in nodeList)
            {
                //if (node.Name == "Corner")
                //{
                //    cornerNode = node.Clone();
                //}
                /*else */
                if (node.Name == "ColumnGroupings")
                {
                    columnGroupingsNode = node.Clone();
                }
                else if (node.Name == "RowGroupings")
                {
                    rowGroupingsNode = node.Clone();
                }
                else if (node.Name == "MatrixColumns")
                {
                    matrixColumnsNode = node.Clone();
                }
                else if (node.Name == "MatrixRows")
                {
                    matrixRowsNode = node.Clone();
                }
            }

            //LoadCorner(cornerNode);

            List <XmlNode> dynamicColumns = new List <XmlNode>();
            List <XmlNode> staticColumns  = new List <XmlNode>();

            LoadColumnGroupings(columnGroupingsNode, dynamicColumns, staticColumns);

            List <XmlNode> dynamicRows = new List <XmlNode>();
            List <XmlNode> staticRows  = new List <XmlNode>();

            LoadRowGroupings(rowGroupingsNode, dynamicRows, staticRows);

            float columnWidth = LoadMatrixColumns(matrixColumnsNode);
            float rowHeight   = LoadMatrixRows(matrixRowsNode);

            matrix.CreateUniqueNames();
            matrix.BuildTemplate();

            for (int i = 1; i < matrix.Columns.Count; i++)
            {
                matrix.Columns[i].Width = columnWidth;
            }
            for (int i = 1; i < matrix.Rows.Count; i++)
            {
                matrix.Rows[i].Height = rowHeight;
            }

            for (int i = 0; i < matrix.Columns.Count; i++)
            {
                for (int j = 0; j < matrix.Rows.Count; j++)
                {
                    matrix.GetCellData(i, j).Cell.Text = "";
                }
            }

            for (int i = 0; i < dynamicColumns.Count; i++)
            {
                Base          tempParent    = parent;
                ComponentBase tempComponent = component;
                parent = matrix.GetCellData(i + 1, 0).Cell;
                LoadReportItems(dynamicColumns[i]);
                component = tempComponent;
                parent    = tempParent;
            }
            for (int i = 0; i < dynamicRows.Count; i++)
            {
                Base          tempParent    = parent;
                ComponentBase tempComponent = component;
                parent = matrix.GetCellData(0, i + 1).Cell;
                LoadReportItems(dynamicRows[i]);
                component = tempComponent;
                parent    = tempParent;
            }
        }