FastReport
773 строки · 28.9 Кб
1using FastReport.Table;2using FastReport.Utils;3using System.Drawing;4
5namespace FastReport.CrossView6{
7internal partial class CrossViewHelper8{9private CrossViewObject crossView;10private int headerWidth;11private int headerHeight;12private int templateBodyWidth;13private int templateBodyHeight;14private bool designTime;15private TableResult resultTable;16private CrossViewDescriptor titleDescriptor;17private CrossViewDescriptor xAxisFieldCaptionDescriptor;18private CrossViewDescriptor yAxisFieldCaptionDescriptor;19private CrossViewHeaderDescriptor noColumnsDescriptor;20private CrossViewHeaderDescriptor noRowsDescriptor;21private CrossViewCellDescriptor noCellsDescriptor;22private int resultBodyWidth;23private int resultBodyHeight;24
25#region Properties26public CrossViewObject CrossView27{28get { return crossView; }29}30
31public Report Report32{33get { return CrossView.Report; }34}35
36public TableResult ResultTable37{38get { return designTime ? resultTable : CrossView.ResultTable; }39}40
41public int HeaderHeight42{43get { return headerHeight; }44}45
46public int HeaderWidth47{48get { return headerWidth; }49}50
51public int TemplateBodyWidth52{53get { return templateBodyWidth; }54}55
56public int TemplateBodyHeight57{58get { return templateBodyHeight; }59}60
61public int ResultBodyWidth62{63get { return resultBodyWidth; }64}65
66public int ResultBodyHeight67{68get { return resultBodyHeight; }69}70
71#endregion72
73#region Private Methods74
75/// <summary>76/// Updates HeaderWidth, HeaderHeight, BodyWidth, BodyHeight properties.77/// </summary>78private void UpdateTemplateSizes()79{80if (CrossView.Data.SourceAssigned)81{82headerWidth = CrossView.Data.YAxisFieldsCount;83headerHeight = CrossView.Data.XAxisFieldsCount;84}85else86{87headerWidth = 1;88headerHeight = 1;89}90if (CrossView.ShowXAxisFieldsCaption)91headerHeight++;92if (CrossView.ShowTitle)93headerHeight++;94if (headerHeight == 0)95if (CrossView.ShowYAxisFieldsCaption)96headerHeight = 1;97templateBodyWidth = 1 + CrossView.Data.XAxisFieldsCount;98if (CrossView.Data.MeasuresInXAxis)99templateBodyWidth = (templateBodyWidth - 1) * CrossView.Data.MeasuresCount;100templateBodyHeight = 1 + CrossView.Data.YAxisFieldsCount;101if (CrossView.Data.MeasuresInYAxis)102templateBodyHeight = (templateBodyHeight - 1) * CrossView.Data.MeasuresCount;103}104
105private void UpdateColumnDescriptors()106{107int left = HeaderWidth;108int top = 0;109if (CrossView.ShowTitle)110top++;111if (CrossView.ShowXAxisFieldsCaption)112top++;113
114foreach (CrossViewHeaderDescriptor descr in CrossView.Data.Columns)115{116descr.TemplateColumn = CrossView.Columns[left + descr.cell];117descr.TemplateRow = CrossView.Rows[top + descr.level];118descr.TemplateCell = CrossView[left + descr.cell, top + descr.level];119}120}121
122private void UpdateRowDescriptors()123{124int left = 0;125int top = HeaderHeight;126
127foreach (CrossViewHeaderDescriptor descr in CrossView.Data.Rows)128{129descr.TemplateColumn = CrossView.Columns[left + descr.level];130descr.TemplateRow = CrossView.Rows[top + descr.cell];131descr.TemplateCell = CrossView[left + descr.level, top + descr.cell];132}133}134
135private void UpdateCellDescriptors()136{137int x = HeaderWidth;138int y = HeaderHeight;139
140foreach (CrossViewCellDescriptor descr in CrossView.Data.Cells)141{142descr.TemplateColumn = CrossView.Columns[x + descr.x];143descr.TemplateRow = CrossView.Rows[y + descr.y];144descr.TemplateCell = CrossView[x + descr.x, y + descr.y];145}146}147
148private void UpdateOtherDescriptors()149{150titleDescriptor.TemplateColumn = null;151titleDescriptor.TemplateRow = null;152titleDescriptor.TemplateCell = null;153if (CrossView.ShowTitle)154{155titleDescriptor.TemplateColumn = CrossView.Columns[HeaderWidth];156titleDescriptor.TemplateRow = CrossView.Rows[0];157titleDescriptor.TemplateCell = CrossView[HeaderWidth, 0];158}159
160xAxisFieldCaptionDescriptor.TemplateColumn = null;161xAxisFieldCaptionDescriptor.TemplateRow = null;162xAxisFieldCaptionDescriptor.TemplateCell = null;163if (CrossView.ShowXAxisFieldsCaption)164{165xAxisFieldCaptionDescriptor.TemplateColumn = CrossView.Columns[HeaderWidth];166xAxisFieldCaptionDescriptor.TemplateRow = CrossView.Rows[(CrossView.ShowTitle ? 1 : 0)];167xAxisFieldCaptionDescriptor.TemplateCell = CrossView[HeaderWidth, (CrossView.ShowTitle ? 1 : 0)];168}169
170}171
172private void ApplyStyle(TableCell cell, string styleName)173{174Style style = null;175int styleIndex = CrossView.StyleSheet.IndexOf(CrossView.Style);176if (styleIndex != -1)177{178StyleCollection styles = CrossView.StyleSheet[styleIndex];179style = styles[styles.IndexOf(styleName)];180}181if (style != null)182cell.ApplyStyle(style);183}184
185private TableCell CreateCell(string text)186{187TableCell cell = new TableCell();188cell.AllowExpressions = false;189cell.Font = DrawUtils.DefaultReportFont;190cell.Text = text;191cell.HorzAlign = HorzAlign.Center;192cell.VertAlign = VertAlign.Center;193ApplyStyle(cell, "Header");194return cell;195}196
197private TableCell CreateDataCell()198{199TableCell cell = new TableCell();200cell.AllowExpressions = false;201cell.Font = DrawUtils.DefaultReportFont;202cell.HorzAlign = HorzAlign.Right;203cell.VertAlign = VertAlign.Center;204ApplyStyle(cell, "Body");205return cell;206}207
208private void SetHint(TableCell cell, string text)209{210cell.Assign(CrossView.Styles.DefaultStyle);211cell.Text = text;212cell.Font = DrawUtils.DefaultReportFont;213cell.TextFill = new SolidFill(Color.Gray);214cell.HorzAlign = HorzAlign.Center;215cell.VertAlign = VertAlign.Center;216cell.SetFlags(Flags.CanEdit, false);217}218
219private void InitTemplateTable()220{221TableColumn column;222CrossViewDescriptor descr;223for (int i = 0; i < headerWidth + templateBodyWidth; i++)224{225column = new TableColumn();226descr = CrossView.Data.GetColumnDescriptor(i);227if (descr.TemplateColumn != null)228column.Assign(descr.TemplateColumn);229ResultTable.Columns.Add(column);230}231TableRow row;232for (int i = 0; i < headerHeight + templateBodyHeight; i++)233{234row = new TableRow();235int rowindex = i;236if (crossView.ShowTitle)237rowindex--;238if (crossView.ShowXAxisFieldsCaption)239rowindex--;240if (rowindex >= 0)241{242descr = CrossView.Data.GetRowDescriptor(rowindex);243}244else245{246if (crossView.ShowTitle)247{248if (i == 0)249{250descr = titleDescriptor;251}252else253{254descr = xAxisFieldCaptionDescriptor;255}256}257else258{259descr = xAxisFieldCaptionDescriptor;260}261}262if (descr.TemplateRow != null)263row.Assign(descr.TemplateRow);264ResultTable.Rows.Add(row);265}266}267
268private void InitResultTable()269{270//todo271TableColumn column;272CrossViewDescriptor descr;273for (int i = 0; i < headerWidth + resultBodyWidth; i++)274{275column = new TableColumn();276
277descr = CrossView.Data.GetColumnDescriptor(0); // temp 0 !!!278
279if (descr.TemplateColumn != null)280column.Assign(descr.TemplateColumn);281ResultTable.Columns.Add(column);282}283TableRow row;284for (int i = 0; i < headerHeight + resultBodyHeight; i++)285{286row = new TableRow();287int rowindex = i;288if (crossView.ShowTitle)289rowindex--;290if (crossView.ShowXAxisFieldsCaption)291rowindex--;292if (rowindex >= 0)293{294descr = CrossView.Data.GetRowDescriptor(0); // temp 0 !!! (rowindex)295}296else297{298if (crossView.ShowTitle)299{300if (i == 0)301{302descr = titleDescriptor;303}304else305{306descr = xAxisFieldCaptionDescriptor;307}308}309else310{311descr = xAxisFieldCaptionDescriptor;312}313}314if (descr.TemplateRow != null)315row.Assign(descr.TemplateRow);316ResultTable.Rows.Add(row);317}318}319
320private void PrintHeaders()321{322if (CrossView.ShowTitle)323PrintTitle();324PrintCorner();325if (CrossView.ShowXAxisFieldsCaption)326PrintXAxisFieldsCaption();327}328
329private void PrintTitle()330{331TableCell templateCell = titleDescriptor.TemplateCell;332if (titleDescriptor.TemplateCell == null)333templateCell = CreateCell(Res.Get("ComponentsMisc,Matrix,Title"));334
335TableCellData resultCell = ResultTable.GetCellData(HeaderWidth, 0);336templateCell.SaveState();337templateCell.GetData();338resultCell.RunTimeAssign(templateCell, true);339resultCell.ColSpan = ResultTable.ColumnCount - HeaderWidth;340templateCell.RestoreState();341
342// print left-top cell343if (titleDescriptor.TemplateCell == null)344templateCell.Text = "";345else346templateCell = CrossView[0, 0];347
348resultCell = ResultTable.GetCellData(0, 0);349templateCell.SaveState();350templateCell.GetData();351resultCell.RunTimeAssign(templateCell, true);352templateCell.RestoreState();353resultCell.ColSpan = HeaderWidth;354}355
356private void PrintCorner()357{358int left = 0;359int top = (CrossView.ShowTitle ? 1 : 0);360int templateTop = titleDescriptor.TemplateRow != null ? 1 : 0;361if (CrossView.ShowYAxisFieldsCaption)362{363
364for (int i = 0; i < HeaderWidth; i++)365{366TableCell templateCell = null;367CrossViewHeaderDescriptor descr = crossView.Data.GetColumnDescriptor(i);368if (descr.TemplateColumn != null)369templateCell = CrossView[0, templateTop];370else371templateCell = CreateCell(descr.GetName());372
373TableCellData resultCell = ResultTable.GetCellData(left, top);374templateCell.SaveState();375templateCell.GetData();376resultCell.RunTimeAssign(templateCell, true);377templateCell.RestoreState();378
379resultCell.RowSpan = HeaderHeight - top;380resultCell.Text = descr.GetName();381left++;382}383}384else385{386TableCell templateCell = CreateCell("");387TableCellData resultCell = ResultTable.GetCellData(left, top);388templateCell.SaveState();389templateCell.GetData();390resultCell.RunTimeAssign(templateCell, true);391templateCell.RestoreState();392resultCell.ColSpan = HeaderWidth;393resultCell.RowSpan = HeaderHeight - top;394}395}396
397private void PrintXAxisFieldsCaption()398{399int top = (CrossView.ShowTitle ? 1 : 0);400int templateTop = titleDescriptor.TemplateRow != null ? 1 : 0;401string captions = "";402for (int i = 0; i < CrossView.Data.XAxisFieldsCount; i++)403{404CrossViewHeaderDescriptor descr = crossView.Data.GetRowDescriptor(i);405if (captions != "")406captions += ", ";407captions += descr.GetName();408}409TableCell templateCell = xAxisFieldCaptionDescriptor.TemplateCell;410if (xAxisFieldCaptionDescriptor.TemplateCell == null)411templateCell = CreateCell(captions);412TableCellData resultCell = ResultTable.GetCellData(HeaderWidth, top);413templateCell.SaveState();414templateCell.GetData();415resultCell.RunTimeAssign(templateCell, true);416resultCell.ColSpan = ResultTable.ColumnCount - HeaderWidth;417templateCell.RestoreState();418}419
420private void PrintXAxisTemplate()421{422int left = headerWidth;423int top = (CrossView.ShowTitle ? 1 : 0) + (CrossView.ShowXAxisFieldsCaption ? 1 : 0);424for (int i = 0; i < CrossView.Data.Columns.Count; i++)425{426CrossViewHeaderDescriptor crossViewHeaderDescriptor = CrossView.Data.Columns[i];427TableCellData resultCell = ResultTable.GetCellData(left + crossViewHeaderDescriptor.cell, top + crossViewHeaderDescriptor.level);428resultCell.ColSpan = crossViewHeaderDescriptor.cellsize;429resultCell.RowSpan = crossViewHeaderDescriptor.levelsize;430TableCell templateCell = crossViewHeaderDescriptor.TemplateCell;431if (templateCell != null)432templateCell.Text = "[" + crossViewHeaderDescriptor.GetName() + "]";433else434templateCell = CreateCell("[" + crossViewHeaderDescriptor.GetName() + "]");435resultCell.RunTimeAssign(templateCell, true);436}437}438
439private void PrintYAxisTemplate()440{441int left = 0;442int top = headerHeight;443for (int i = 0; i < CrossView.Data.Rows.Count; i++)444{445CrossViewHeaderDescriptor crossViewHeaderDescriptor = CrossView.Data.Rows[i];446TableCellData resultCell = ResultTable.GetCellData(left + crossViewHeaderDescriptor.level, top + crossViewHeaderDescriptor.cell);447resultCell.ColSpan = crossViewHeaderDescriptor.levelsize;448resultCell.RowSpan = crossViewHeaderDescriptor.cellsize;449TableCell templateCell = crossViewHeaderDescriptor.TemplateCell;450if (templateCell != null)451templateCell.Text = "[" + crossViewHeaderDescriptor.GetName() + "]";452else453templateCell = CreateCell("[" + crossViewHeaderDescriptor.GetName() + "]");454resultCell.RunTimeAssign(templateCell, true);455}456}457
458private void PrintDataTemplate()459{460CrossViewCellDescriptor crossViewCellDescriptor;461int top = headerHeight;462int left = headerWidth;463TableCell templateCell = null;464TableCellData resultCell = null;465for (int i = 0; i < CrossView.Data.columnTerminalIndexes.Length; i++)466{467for (int j = 0; j < CrossView.Data.rowTerminalIndexes.Length; j++)468{469crossViewCellDescriptor = CrossView.Data.Cells[i * CrossView.Data.rowTerminalIndexes.Length + j];470resultCell = ResultTable.GetCellData(left + i, top + j);471
472templateCell = crossViewCellDescriptor.TemplateCell;473if (templateCell == null)474templateCell = CreateDataCell();475templateCell.Text = "0";476resultCell.RunTimeAssign(templateCell, true);477}478}479}480#endregion481
482#region Public Methods483public void BuildTemplate()484{485// create temporary descriptors486if (!CrossView.Data.SourceAssigned)487{488CrossView.Data.columnDescriptorsIndexes = new int[] { 0 };489CrossView.Data.rowDescriptorsIndexes = new int[] { 0 };490CrossView.Data.columnTerminalIndexes = new int[] { 0 };491CrossView.Data.rowTerminalIndexes = new int[] { 0 };492CrossView.Data.Columns.Add(noColumnsDescriptor);493CrossView.Data.Rows.Add(noRowsDescriptor);494CrossView.Data.Cells.Add(noCellsDescriptor);495}496
497UpdateTemplateSizes();498
499// create the result table500designTime = true;501resultTable = new TableResult();502InitTemplateTable();503PrintHeaders();504PrintXAxisTemplate();505PrintYAxisTemplate();506PrintDataTemplate();507
508// copy the result table to the Matrix509CrossView.ColumnCount = ResultTable.ColumnCount;510CrossView.RowCount = ResultTable.RowCount;511CrossView.FixedColumns = HeaderWidth;512CrossView.FixedRows = HeaderHeight;513CrossView.CreateUniqueNames();514
515for (int x = 0; x < CrossView.ColumnCount; x++)516{517CrossView.Columns[x].Assign(ResultTable.Columns[x]);518}519for (int y = 0; y < CrossView.RowCount; y++)520{521CrossView.Rows[y].Assign(ResultTable.Rows[y]);522}523for (int x = 0; x < CrossView.ColumnCount; x++)524{525for (int y = 0; y < CrossView.RowCount; y++)526{527TableCell cell = CrossView[x, y];528cell.AssignAll(ResultTable[x, y]);529cell.SetFlags(Flags.CanEdit, true);530}531}532UpdateDescriptors();533resultTable.Dispose();534
535// clear temporary descriptors, set hints536if (!CrossView.Data.SourceAssigned)537{538SetHint(CrossView[HeaderWidth, (CrossView.ShowTitle ? 1 : 0) + (CrossView.ShowXAxisFieldsCaption ? 1 : 0)], Res.Get("ComponentsMisc,CrossView,SetSource"));539CrossView.Data.Columns.Clear();540SetHint(CrossView[0, HeaderHeight], Res.Get("ComponentsMisc,CrossView,SetSource"));541CrossView.Data.Rows.Clear();542SetHint(CrossView[HeaderWidth, HeaderHeight], Res.Get("ComponentsMisc,CrossView,SetSource"));543CrossView.Data.Cells.Clear();544CrossView.Data.columnDescriptorsIndexes = new int[0];545CrossView.Data.rowDescriptorsIndexes = new int[0];546CrossView.Data.columnTerminalIndexes = new int[0];547CrossView.Data.rowTerminalIndexes = new int[0];548}549else550{551noColumnsDescriptor.TemplateColumn = CrossView.Data.Columns[0].TemplateColumn;552noColumnsDescriptor.TemplateRow = CrossView.Data.Columns[0].TemplateRow;553noColumnsDescriptor.TemplateCell = CrossView.Data.Columns[0].TemplateCell;554noRowsDescriptor.TemplateColumn = CrossView.Data.Rows[0].TemplateColumn;555noRowsDescriptor.TemplateRow = CrossView.Data.Rows[0].TemplateRow;556noRowsDescriptor.TemplateCell = CrossView.Data.Rows[0].TemplateCell;557noCellsDescriptor.TemplateColumn = CrossView.Data.Cells[0].TemplateColumn;558noCellsDescriptor.TemplateRow = CrossView.Data.Cells[0].TemplateRow;559noCellsDescriptor.TemplateCell = CrossView.Data.Cells[0].TemplateCell;560}561}562
563public void UpdateDescriptors()564{565bool needClearTemporaryDescriptors = false;566if (!CrossView.Data.SourceAssigned && (CrossView.Data.Columns.Count == 0))567{568needClearTemporaryDescriptors = true;569CrossView.Data.columnDescriptorsIndexes = new int[] { 0 };570CrossView.Data.rowDescriptorsIndexes = new int[] { 0 };571CrossView.Data.columnTerminalIndexes = new int[] { 0 };572CrossView.Data.rowTerminalIndexes = new int[] { 0 };573CrossView.Data.Columns.Add(noColumnsDescriptor);574CrossView.Data.Rows.Add(noRowsDescriptor);575CrossView.Data.Cells.Add(noCellsDescriptor);576}577
578UpdateTemplateSizes();579CrossView.FixedColumns = HeaderWidth;580CrossView.FixedRows = HeaderHeight;581UpdateColumnDescriptors();582UpdateRowDescriptors();583UpdateCellDescriptors();584UpdateOtherDescriptors();585
586// clear temporary descriptors587if (needClearTemporaryDescriptors)588{589CrossView.Data.Columns.Clear();590CrossView.Data.Rows.Clear();591CrossView.Data.Cells.Clear();592CrossView.Data.columnDescriptorsIndexes = new int[0];593CrossView.Data.rowDescriptorsIndexes = new int[0];594CrossView.Data.columnTerminalIndexes = new int[0];595CrossView.Data.rowTerminalIndexes = new int[0];596}597}598
599public void UpdateStyle()600{601for (int y = 0; y < CrossView.RowCount; y++)602{603for (int x = 0; x < CrossView.ColumnCount; x++)604{605string style = x < HeaderWidth || y < HeaderHeight ? "Header" : "Body";606ApplyStyle(CrossView[x, y], style);607}608}609}610
611public void StartPrint()612{613//todo614/*615if ((Matrix.Data.Columns.Count == 0 && Matrix.Data.Rows.Count == 0) || Matrix.Data.Cells.Count == 0)
616throw new Exception(String.Format(Res.Get("Messages,MatrixError"), Matrix.Name));
617*/
618designTime = false;619/*620FNoColumns = Matrix.Data.Columns.Count == 0;
621FNoRows = Matrix.Data.Rows.Count == 0;
622
623// create temporary descriptors
624if (FNoColumns)
625Matrix.Data.Columns.Add(FNoColumnsDescriptor);
626if (FNoRows)
627Matrix.Data.Rows.Add(FNoRowsDescriptor);
628*/
629OnProgressInternal();630/*631Matrix.Data.Clear();
632Matrix.OnManualBuild(EventArgs.Empty);
633*/
634resultBodyHeight = CrossView.Data.DataRowCount;635resultBodyWidth = CrossView.Data.DataColumnCount;636}637
638
639
640
641public void AddData()642{643
644}645
646public void FinishPrint()647{648//todo649UpdateDescriptors();650ResultTable.FixedColumns = HeaderWidth;651ResultTable.FixedRows = HeaderHeight;652
653InitResultTable();654//todo655//temp656PrintHeaders();657PrintXAxisResult();658PrintYAxisResult();659PrintResultData();660
661
662
663// PrintData();664/*665// clear temporary descriptors
666if (FNoColumns)
667Matrix.Data.Columns.Clear();
668if (FNoRows)
669Matrix.Data.Rows.Clear();
670*/
671}672
673private int axisLeft;674private int axisTop;675public bool XAxisDrawCellHandler(CrossViewAxisDrawCell crossViewAxisDrawCell)676{677CrossViewHeaderDescriptor crossViewHeaderDescriptor = CrossView.Data.Columns[0]; // temp - 0 todoCUBE678TableCellData resultCell = ResultTable.GetCellData(axisLeft + crossViewAxisDrawCell.Cell, axisTop + crossViewAxisDrawCell.Level);679resultCell.ColSpan = crossViewAxisDrawCell.SizeCell;680resultCell.RowSpan = crossViewAxisDrawCell.SizeLevel;681TableCell templateCell = crossViewHeaderDescriptor.TemplateCell;682if (templateCell != null)683templateCell.Text = crossViewAxisDrawCell.Text;684else685templateCell = CreateCell(crossViewAxisDrawCell.Text);686resultCell.RunTimeAssign(templateCell, true);687return false;688}689
690private void PrintXAxisResult()691{692
693axisLeft = headerWidth;694axisTop = (CrossView.ShowTitle ? 1 : 0) + (CrossView.ShowXAxisFieldsCaption ? 1 : 0);695
696CrossView.CubeSource.TraverseXAxis(XAxisDrawCellHandler);697}698
699public bool YAxisDrawCellHandler(CrossViewAxisDrawCell crossViewAxisDrawCell)700{701CrossViewHeaderDescriptor crossViewHeaderDescriptor = CrossView.Data.Rows[0]; // temp - 0 todoCUBE702TableCellData resultCell = ResultTable.GetCellData(axisLeft + crossViewAxisDrawCell.Level, axisTop + crossViewAxisDrawCell.Cell);703resultCell.ColSpan = crossViewAxisDrawCell.SizeLevel;704resultCell.RowSpan = crossViewAxisDrawCell.SizeCell;705TableCell templateCell = crossViewHeaderDescriptor.TemplateCell;706if (templateCell != null)707templateCell.Text = crossViewAxisDrawCell.Text;708else709templateCell = CreateCell(crossViewAxisDrawCell.Text);710resultCell.RunTimeAssign(templateCell, true);711return false;712}713
714private void PrintYAxisResult()715{716
717axisLeft = 0;718axisTop = headerHeight;719
720CrossView.CubeSource.TraverseYAxis(YAxisDrawCellHandler);721}722
723private void PrintResultData()724{725CrossViewCellDescriptor crossViewCellDescriptor;726int top = headerHeight;727int left = headerWidth;728TableCell templateCell = null;729TableCellData resultCell = null;730CrossViewMeasureCell cubeMeasureCell;731for (int i = 0; i < CrossView.Data.DataColumnCount; i++)732{733for (int j = 0; j < CrossView.Data.DataRowCount; j++)734{735cubeMeasureCell = CrossView.CubeSource.GetMeasureCell(i, j);736crossViewCellDescriptor = CrossView.Data.Cells[0]; // todoCUBE temp 0 !!!737resultCell = ResultTable.GetCellData(left + i, top + j);738
739templateCell = crossViewCellDescriptor.TemplateCell;740if (templateCell == null)741templateCell = CreateDataCell();742templateCell.Text = cubeMeasureCell.Text;743resultCell.RunTimeAssign(templateCell, true);744}745}746}747
748internal void CreateOtherDescriptor()749{750titleDescriptor = new CrossViewDescriptor();751xAxisFieldCaptionDescriptor = new CrossViewDescriptor();752yAxisFieldCaptionDescriptor = new CrossViewDescriptor();753noColumnsDescriptor = new CrossViewHeaderDescriptor();754noColumnsDescriptor.cell = 0;755noColumnsDescriptor.cellsize = 1;756noColumnsDescriptor.level = 0;757noColumnsDescriptor.levelsize = 1;758noRowsDescriptor = new CrossViewHeaderDescriptor();759noRowsDescriptor.cell = 0;760noRowsDescriptor.cellsize = 1;761noRowsDescriptor.level = 0;762noRowsDescriptor.levelsize = 1;763noCellsDescriptor = new CrossViewCellDescriptor();764}765#endregion766
767public CrossViewHelper(CrossViewObject crossView)768{769this.crossView = crossView;770CreateOtherDescriptor();771}772}773}