Esempio n. 1
0
        private void FillDefaultData(ExtendedDataGrid exGrid)
        {
            DataTable dataTable = new DataTable("DataTable" + this.NumberOfSheets);
            int       rowsNum   = 17;
            int       colsNum   = 13;

            for (int i = 0; i < colsNum; i++)
            {
                dataTable.Columns.Add(new DataColumn(SSColumns.ToString(i), typeof(SpreadsheetCell)));
            }

            for (int i = 0; i < rowsNum; i++)
            {
                var row = dataTable.NewRow();
                dataTable.Rows.Add(row);
                for (int j = 0; j < colsNum; j++)
                {
                    string cellName = SSColumns.ToString(j) + i;
                    row[j] = new SpreadsheetCell(string.Empty, dataTable, new SpreadsheetCellCustomInfo(new CellName(cellName, i, j)));
                }
            }

            this.DataTables.Add(dataTable);
            exGrid.ItemsSource = dataTable.DefaultView;
        }
Esempio n. 2
0
        /// <summary>
        /// Resize table by creating new and copying old values
        /// </summary>
        /// <param name="exGrid"></param>
        /// <param name="oldDataTable"></param>
        /// <param name="rowsNum"></param>
        /// <param name="colsNum"></param>
        private void ResizeTable(ExtendedDataGrid exGrid, DataTable oldDataTable, int rowsNum, int colsNum)
        {
            int boundRows = oldDataTable.Rows.Count < rowsNum ? oldDataTable.Rows.Count : rowsNum;
            int boundCols = oldDataTable.Columns.Count < colsNum ? oldDataTable.Columns.Count : colsNum;

            DataTable newDataTable = new DataTable(oldDataTable.TableName);

            for (int i = 0; i < colsNum; i++)
            {
                newDataTable.Columns.Add(new DataColumn(SSColumns.ToString(i), typeof(SpreadsheetCell)));
            }

            for (int i = 0; i < rowsNum; i++)
            {
                var row = newDataTable.NewRow();
                newDataTable.Rows.Add(row);
                for (int j = 0; j < colsNum; j++)
                {
                    string cellName = SSColumns.ToString(j) + i;
                    row[j] = new SpreadsheetCell(string.Empty, newDataTable, new SpreadsheetCellCustomInfo(new CellName(cellName, i, j)));
                }
            }

            // copy data
            for (int i = 0; i < boundRows; i++)
            {
                for (int j = 0; j < boundCols; j++)
                {
                    SpreadsheetCell cell    = newDataTable.GetSpreadsheetCell(i, j);
                    SpreadsheetCell oldCell = oldDataTable.GetSpreadsheetCell(i, j);
                    cell.Content = oldCell.Content;
                    cell.Tag     = oldCell.Tag;
                }
            }
            this.DataTables[this.CurrentSheetNumber] = newDataTable;

            // VERY VERY DIRTY HACK because nulling throws exception, dunno why
            try
            {
                exGrid.ItemsSource = null;
            }
            catch { }

            exGrid.ItemsSource = newDataTable.DefaultView;
        }
Esempio n. 3
0
        /// <summary>
        /// Gets sum of selected cells content
        /// </summary>
        /// <param name="chartBy"></param>
        /// <returns></returns>
        private Dictionary <string, double> GetChartDataOfSelectedCells(ChartBy chartBy)
        {
            Dictionary <string, double> drawChart = new Dictionary <string, double>();

            var dataGrid = (ExtendedDataGrid)((TabItem)WorkspaceTabControl.Items[this.CurrentSheetNumber]).Content;

            foreach (var cellInfo in dataGrid.SelectedCells)
            {
                // this changes the cell's content not the data item behind it
                var gridCell = dataGrid.TryToFindGridCell(cellInfo);
                if (gridCell != null)
                {
                    string columnHeader = gridCell.Column.Header.ToString();
                    int    rowIndex     = dataGrid.Items.IndexOf(cellInfo.Item);

                    string coord = chartBy == ChartBy.Rows ? rowIndex.ToString() : columnHeader;

                    var cell = this.DataTables[this.CurrentSheetNumber].GetSpreadsheetCell(rowIndex, SSColumns.Parse(columnHeader));
                    if (!drawChart.ContainsKey(coord))
                    {
                        drawChart.Add(coord, 0);
                    }

                    if (cell.Content == string.Empty)
                    {
                        continue;
                    }

                    double doubleVal;
                    if (double.TryParse(cell.Content, out doubleVal))
                    {
                        drawChart[coord] += doubleVal;
                    }
                    else
                    {
                        throw new Exception("Some of selected cells contains non-numeric values!");
                    }
                }
            }

            if (drawChart.Count == 0)
            {
                throw new Exception("Please select cells to graph from!");
            }

            return(drawChart);
        }