/// <summary>
        /// Sets grid paras (column) Draw graph according passed configuration
        /// </summary>
        /// <param name="configuration">Graph configuration</param>
        /// <param name="ownerSize">Owner size.</param>
        /// <param name="context">Configuration context.</param>
        public void SetConfiguration(TableConfiguration configuration, Size ownerSize, object context)
        {
            var dataSource = new DataTable();

            dataGridView.AutoGenerateColumns = false;

            _plainData = configuration.TableSource.GetPlainData(context);
            dataGridView.ColumnCount = configuration.ColumnDefinitions.Count;

            if (configuration.UseAutoSize)
            {
                dataGridView.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill;
            }
            else
            {
                dataGridView.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.ColumnHeader;
            }
            dataGridView.AutoSizeRowsMode = DataGridViewAutoSizeRowsMode.AllCells;

            for (int i = 0; i < configuration.ColumnDefinitions.Count; i++)
            {
                var column     = dataGridView.Columns[i];
                var definition = configuration.ColumnDefinitions[i];

                column.Tag = definition;
                column.DefaultCellStyle.Format = definition.Format;
                column.HeaderText       = definition.ColumnName;
                column.DataPropertyName = definition.ColumnName;

                column.DefaultCellStyle.Alignment = definition.Align.GetColumnAlign();
                column.DefaultCellStyle.Font      = new Font(string.Empty, Convert.ToInt32(definition.FontSize ?? "8"), definition.GetFontStyle());

                column.HeaderCell.Style.Alignment = definition.HeaderAlign.GetColumnAlign();
                column.HeaderCell.Style.Font      = new Font(
                    string.Empty,
                    Convert.ToInt32(definition.HeaderFontSize ?? "8"),
                    definition.GetHeaderFontStyle());

                var columnConfig = _stateSettings.GetColumnSettings(definition.Tag);
                if (!configuration.UseAutoSize)
                {
                    column.Width = columnConfig.Width;
                }

                column.Visible = columnConfig.Visible;

                dataSource.Columns.Add(definition.ColumnName, definition.Type.GetClrType());
            }

            foreach (var rows in _plainData)
            {
                dataSource.LoadDataRow(rows.Values.ToArray(), true);
            }

            dataGridView.DataSource = dataSource.DefaultView;
        }