public void LoadHtmlTable() { System.Web.UI.HtmlControls.HtmlTable tblPivot = new System.Web.UI.HtmlControls.HtmlTable(); tblPivot.CellPadding = 0; tblPivot.CellSpacing = 0; tblPivot.Width = "100%"; tblPivot.Height = "100%"; tblPivot.Attributes.Add("class", "tbl1_T"); pnlPivot.Controls.Add(tblPivot); if (_report == null || _report.Cellset.IsValid == false) { return; } int Ax0MemCount = _report.Cellset.Axis0TupleMemCount; int Ax1MemCount = _report.Cellset.Axis1TupleMemCount; int Ax0PosCount = _report.Cellset.Axis0PosCount; int Ax1PosCount = _report.Cellset.Axis1PosCount; int ax0OrderPos = _report.GetOrderPosition(_report.Axes[0]); int ax1OrderPos = _report.GetOrderPosition(_report.Axes[1]); Hierarchy ax1Hier = null; Hierarchy ax0Hier = null; //table System.Web.UI.HtmlControls.HtmlTableRow tr = null; System.Web.UI.HtmlControls.HtmlTableCell td = null; if (Ax0PosCount == 0 && Ax1PosCount == 0) { tr = new HtmlTableRow(); tblPivot.Rows.Add(tr); td = new HtmlTableCell(); tr.Cells.Add(td); td.Attributes.Add("class", "tbl1_err"); td.Attributes.Add("nowrap", "true"); td.InnerText = "Query successfully executed, cellset contains no data"; return; } for (int i = 0; i < Ax0MemCount; i++) { tr = new System.Web.UI.HtmlControls.HtmlTableRow(); tblPivot.Rows.Add(tr); for (int j = 0; j < Ax1MemCount; j++) { td = new System.Web.UI.HtmlControls.HtmlTableCell(); td.Attributes.Add("class", "tbl1_HC"); td.NoWrap = true; tr.Cells.Add(td); //hier controls in last row if (i == Ax0MemCount - 1) { this.CreateHierControls(_report.Axes[1].Hierarchies[j], td); } } ax0Hier = _report.Axes[0].Hierarchies[i]; for (int j = 0; j < Ax0PosCount; j++) { CellsetMember mem = _report.Cellset.GetCellsetMember(0, i, j); bool inOrderTuple = false; //if same as prev, continue if (j != 0 && _report.Cellset.GetCellsetMember(0, i, j - 1).UniqueName == mem.UniqueName) { continue; } td = new System.Web.UI.HtmlControls.HtmlTableCell(); td.NoWrap = true; // handle order position highlight if (j == ax0OrderPos) // in order tuple { inOrderTuple = true; } // handle colspan int spanCount = 1; for (int n = j + 1; n < Ax0PosCount; n++) { CellsetMember nextMem = _report.Cellset.GetCellsetMember(0, i, n); if (nextMem.UniqueName == mem.UniqueName) { spanCount++; // handle order position highlight if (n == ax0OrderPos) { inOrderTuple = true; } } else { break; } } // handle order position highlight if (inOrderTuple) // in order tuple { td.Attributes.Add("class", "tbl1_H3"); } else { td.Attributes.Add("class", "tbl1_H2"); } // if we span if (spanCount > 1) { td.ColSpan = spanCount; } if (mem.ChildCount == 0) { // leaf-level System.Web.UI.HtmlControls.HtmlImage img = new System.Web.UI.HtmlControls.HtmlImage(); img.Src = "../images/leaf.gif"; td.Controls.Add(img); } System.Web.UI.HtmlControls.HtmlInputCheckBox chb = new System.Web.UI.HtmlControls.HtmlInputCheckBox(); chb.ID = "m:" + _contr.IdentifierFromCellsetPosition(0, j, i); chb.EnableViewState = false; td.EnableViewState = false; td.Controls.Add(chb); System.Web.UI.LiteralControl literal = new System.Web.UI.LiteralControl(mem.Name); td.Controls.Add(literal); tr.Cells.Add(td); } // hier controls in last col td = new System.Web.UI.HtmlControls.HtmlTableCell(); td.Attributes.Add("class", "tbl1_HC"); td.NoWrap = true; CreateHierControls(ax0Hier, td); tr.Cells.Add(td); } for (int i = 0; i < Ax1PosCount; i++) { tr = new System.Web.UI.HtmlControls.HtmlTableRow(); tblPivot.Rows.Add(tr); for (int j = 0; j < Ax1MemCount; j++) { ax1Hier = _report.Axes[1].Hierarchies[j]; CellsetMember mem = _report.Cellset.GetCellsetMember(1, j, i); bool inOrderTuple = false; //if same as prev, continue if (i != 0 && _report.Cellset.GetCellsetMember(1, j, i - 1).UniqueName == mem.UniqueName) { continue; } td = new System.Web.UI.HtmlControls.HtmlTableCell(); td.NoWrap = true; // handle order position highlight if (i == ax1OrderPos) // in order tuple { inOrderTuple = true; } // handle rowspan int spanCount = 1; for (int n = i + 1; n < Ax1PosCount; n++) { CellsetMember nextMem = _report.Cellset.GetCellsetMember(1, j, n); if (nextMem.UniqueName == mem.UniqueName) { spanCount++; // handle order position highlight if (n == ax1OrderPos) { inOrderTuple = true; } } else { break; } } // handle order position highlight if (inOrderTuple) // in order tuple { td.Attributes.Add("class", "tbl1_H1"); } else { td.Attributes.Add("class", "tbl1_H"); } // if we span if (spanCount > 1) { td.RowSpan = spanCount; } if (mem.ChildCount == 0) { // leaf-level System.Web.UI.HtmlControls.HtmlImage img = new System.Web.UI.HtmlControls.HtmlImage(); img.Src = "../images/leaf.gif"; td.Controls.Add(img); } System.Web.UI.HtmlControls.HtmlInputCheckBox chb = new System.Web.UI.HtmlControls.HtmlInputCheckBox(); chb.ID = "m:" + _contr.IdentifierFromCellsetPosition(1, i, j); chb.EnableViewState = false; td.EnableViewState = false; td.Controls.Add(chb); System.Web.UI.LiteralControl literal = new System.Web.UI.LiteralControl(mem.Name); td.Controls.Add(literal); tr.Cells.Add(td); } for (int j = 0; j < Ax0PosCount; j++) { td = new System.Web.UI.HtmlControls.HtmlTableCell(); td.Attributes.Add("class", "tbl1_C"); td.NoWrap = true; Cell olapCell = _report.Cellset.GetCell(j, i); td.InnerText = olapCell.FormattedValue; tr.Cells.Add(td); } } }