public VisualizerForm(VisualizerBaseTable p_objBaseTableToVisualize)
            : this()
        {
            // If no data sent
            if (p_objBaseTableToVisualize.Table.Length == 0)
            {
                return;
            }

            SetDataToDataGrid(p_objBaseTableToVisualize);

            // Since only one table sent
            objExpander.Visibility = Visibility.Collapsed;
        }
        public static BaseTable DataSetToVisualizerBase(DataSet p_objDataSetToVisualize)
        {
            // List of bast type tables
            VisualizerBaseTable[] arrTables = new VisualizerBaseTable[p_objDataSetToVisualize.Tables.Count];

            // for each table in DataSet
            for (int intCurrTable = 0; intCurrTable < p_objDataSetToVisualize.Tables.Count; intCurrTable++)
            {
                #region Convert DataTable to Base Table

                // Get current Table
                DataTable dtSingleTableFromDS = p_objDataSetToVisualize.Tables[intCurrTable];

                // Create Dictionary of columns and types
                Dictionary<string, Type> dicColumns = new Dictionary<string, Type>();
                foreach (DataColumn column in dtSingleTableFromDS.Columns)
                {
                    dicColumns.Add(column.ColumnName, column.DataType);
                }

                // Create array of Primary-key columns
                string[] arrPrimaryKeys = new string[dtSingleTableFromDS.PrimaryKey.Length];
                for (int intCurrPK = 0; intCurrPK < arrPrimaryKeys.Length; intCurrPK++)
                {
                    arrPrimaryKeys[intCurrPK] = dtSingleTableFromDS.PrimaryKey[intCurrPK].ColumnName;
                }

                // Create Base table from current DataTable
                VisualizerBaseTable objSingleTableFromDS = new VisualizerBaseTable(DataTableToMatrix(dtSingleTableFromDS),
                                                          dicColumns,
                                                          arrPrimaryKeys,
                                                          dtSingleTableFromDS.TableName);

                // Ver2: prepare to Hierarchical DataView within Dataset
                // Ver2: objSingleTableFromDS.MyIdField = objHierarchicalDV.MyIDField;
                // Ver2: objSingleTableFromDS.MyParentIdField = objHierarchicalDV.MyParentIDField;

                #endregion

                // Add Base table to array of tables
                arrTables[intCurrTable] = objSingleTableFromDS;
            }

            // Create base object to that can go between debugger and debugee
            BaseTable objVisualizer = new BaseTable(arrTables);

            return objVisualizer;
        }
        public static DataTable BaseTableToDataTable(VisualizerBaseTable p_objInnerTable)
        {
            // New DataTable
            DataTable dtNormalDataTable = new DataTable(p_objInnerTable.TableName);

            // Create columns by type
            foreach (string strColName in p_objInnerTable.MyColumns.Keys)
            {
                dtNormalDataTable.Columns.Add(strColName, p_objInnerTable.MyColumns[strColName]);
            }

            // Create Primary Key array
            DataColumn[] arrPK = new DataColumn[p_objInnerTable.MyPrimaryKey.Length];
            for (int intCurrPk = 0; intCurrPk < p_objInnerTable.MyPrimaryKey.Length; intCurrPk++)
            {
                arrPK[intCurrPk] = dtNormalDataTable.Columns[p_objInnerTable.MyPrimaryKey[intCurrPk]];
            }

            // User primary key array
            dtNormalDataTable.PrimaryKey = arrPK;

            // For each existing row
            foreach (object[] objCurrRow in p_objInnerTable.Table)
            {
                // new row
                DataRow drNewRow = dtNormalDataTable.NewRow();

                // copy all data from row in one shot (instead of coping each cell)
                drNewRow.ItemArray = objCurrRow;

                // add row to new table
                dtNormalDataTable.Rows.Add(drNewRow);
            }

            return dtNormalDataTable;
        }
        private void SetDataToDataGrid(VisualizerBaseTable p_objBaseTableToVisualize)
        {
            // Clear dummy columns from Visual Studio Designer
            dgvVisualizer.Columns.Clear();

            // Set source of data
            dgvVisualizer.ItemsSource = p_objBaseTableToVisualize.Table;

            // foreach column
            foreach (string strColumnName in p_objBaseTableToVisualize.MyColumns.Keys)
            {
                // We add a column to the DataGrid
                dgvVisualizer.Columns.Add(new DataGridTextColumn()
                                              {
                                                  // Title of Column
                                                  Header = strColumnName,
                                                  // Data in column is taken with binding from the row in cell number X
                                                  Binding = new Binding("[" + dgvVisualizer.Columns.Count + "]")
                                              });
            }

            // Display status:
            lblRowsCounter.Content = "Total rows: " + p_objBaseTableToVisualize.Table.Length;
        }
Example #5
0
 /// <summary>
 /// Basic Table
 /// </summary>
 /// <param name="p_arrTable">Data source</param>
 /// <param name="p_dicColumns">columns names and types</param>
 /// <param name="p_arrPrimaryKeys">Primary keys</param>
 /// <param name="p_strTableName">Name of table</param>
 public BaseTable(object[][] p_arrTable, Dictionary<string, Type> p_dicColumns, string[] p_arrPrimaryKeys, string p_strTableName)
 {
     VisualizerBaseTable objTableToVisualize = new VisualizerBaseTable(p_arrTable, p_dicColumns, p_arrPrimaryKeys, p_strTableName);
     m_lstTableToVisualize.Add(objTableToVisualize);
 }