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