public static DateTimeColumnProperties Load(MainDataSet.DynamicColumnsRow row)
        {
            DateTimeColumnProperties result = null;

            ///////////////////////////////////////////////////////////////////////////////

            if (row != null && !row.IsPropertiesNull())
            {
                var propsJson = row.Properties;
                if (!String.IsNullOrEmpty(propsJson))
                {
                    result = JsonConvert.DeserializeObject <DateTimeColumnProperties>(propsJson);
                }
            }

            ///////////////////////////////////////////////////////////////////////////////

            if (result == null)
            {
                result = new DateTimeColumnProperties
                {
                    Format     = DateTimeColumnFormat.DateOnly,
                    DateFormat = "MM/dd/yy",
                    TimeFormat = "HH:mm:ss (24-hour clock)"
                };
            }

            ///////////////////////////////////////////////////////////////////////////////

            return(result);
        }
        protected void LoadProps(MainDataSet.DynamicColumnsRow dynamicColumnsRow)
        {
            try
            {
                var props = NumericColumnProperties.Load(dynamicColumnsRow);

                if (props.IsDecimal)
                {
                    rdbDecimal.Checked = true;
                }
                else
                {
                    rdbInteger.Checked = true;
                }

                txtMinimum.Value = props.Min;
                txtMaximum.Value = props.Max;

                txtDecimalPlaces.Value = props.DecimalPlaces;

                UpdateControls();
            }
            catch (Exception ex)
            {
                MainForm.ShowExceptionMessage(ex);
            }
        }
        public static NumericColumnProperties Load(MainDataSet.DynamicColumnsRow row)
        {
            NumericColumnProperties result = null;

            ///////////////////////////////////////////////////////////////////////////////

            if (row != null && !row.IsPropertiesNull())
            {
                var propsJson = row.Properties;
                if (!String.IsNullOrEmpty(propsJson))
                {
                    result = JsonConvert.DeserializeObject <NumericColumnProperties>(propsJson);
                }
            }

            ///////////////////////////////////////////////////////////////////////////////

            if (result == null)
            {
                result = new NumericColumnProperties
                {
                    IsDecimal     = false,
                    DecimalPlaces = 1
                };
            }

            return(result);
        }
        protected void ShowColumnPropsEditor(MainDataSet.DynamicColumnsRow dynamicColumnRow, bool forceRefresh)
        {
            if (dynamicColumnRow == null)
            {
                groupProperties.Visible = true;
                _currentColumnID        = -1;
                _currentColumnType      = DynamicColumnType.None;
                return;
            }

            ///////////////////////////////////////////////////////////////////////////////

            var dynamicColumnID = dynamicColumnRow.ID;
            var type            = (DynamicColumnType)dynamicColumnRow.Type;

            if (!forceRefresh && dynamicColumnID == _currentColumnID && _formColumnPropsEditor != null)
            {
                return;
            }

            if (_formColumnPropsEditor != null)
            {
                _formColumnPropsEditor.Close();
                _formColumnPropsEditor = null;
            }

            groupProperties.Visible = false;

            switch (type)
            {
            case DynamicColumnType.Category:
                _formColumnPropsEditor = new FormColumnPropsCategories(_views, dynamicColumnID, dynamicColumnRow.Title);
                break;

            case DynamicColumnType.FreeText:
                _formColumnPropsEditor = new FormColumnPropsFreeText();
                break;

            case DynamicColumnType.Numeric:
                _formColumnPropsEditor = new FormColumnPropsNumeric(_views, dynamicColumnRow);
                break;

            case DynamicColumnType.DateTime:
                _formColumnPropsEditor = new FormColumnPropsDateTime(_views, dynamicColumnRow);
                break;
            }

            if (_formColumnPropsEditor != null)
            {
                _formColumnPropsEditor.TopLevel = false;
                _formColumnPropsEditor.Parent   = this;
                _formColumnPropsEditor.Left     = groupProperties.Left;
                _formColumnPropsEditor.Top      = groupProperties.Top;
                _formColumnPropsEditor.Show();
            }

            _currentColumnID   = dynamicColumnID;
            _currentColumnType = type;
        }
        public FormColumnPropsDateTime(ViewsManager views, MainDataSet.DynamicColumnsRow dynamicColumnsRow)
        {
            InitializeComponent();

            this.BackColor = MainForm.ColorBackground;

            _views = views;

            cmbDateFormat.SelectedIndex = 0;
            cmbTimeFormat.SelectedIndex = 0;

            LoadProps(dynamicColumnsRow);
        }
        public FormColumnPropsNumeric(ViewsManager views, MainDataSet.DynamicColumnsRow dynamicColumnsRow)
        {
            InitializeComponent();

            this.BackColor = MainForm.ColorBackground;

            _views = views;

            txtMinimum.Minimum = Decimal.MinValue;
            txtMinimum.Maximum = Decimal.MaxValue;

            txtMaximum.Minimum = Decimal.MinValue;
            txtMaximum.Maximum = Decimal.MaxValue;

            LoadProps(dynamicColumnsRow);
        }
        protected void LoadProps(MainDataSet.DynamicColumnsRow dynamicColumnsRow)
        {
            try
            {
                var props = DateTimeColumnProperties.Load(dynamicColumnsRow);

                switch (props.Format)
                {
                case DateTimeColumnFormat.DateOnly:
                    rdbDateOnly.Checked = true;
                    break;

                case DateTimeColumnFormat.TimeOnly:
                    rdbTimeOnly.Checked = true;
                    break;

                case DateTimeColumnFormat.DateTime:
                    rdbDateTime.Checked = true;
                    break;
                }

                if (!String.IsNullOrEmpty(props.DateFormat))
                {
                    cmbDateFormat.Text = props.DateFormat;
                }

                if (!String.IsNullOrEmpty(props.TimeFormat))
                {
                    cmbTimeFormat.Text = props.TimeFormat;
                }
            }
            catch (Exception ex)
            {
                MainForm.ShowExceptionMessage(ex);
            }
        }
        protected void SetDynamicCategoryValue(List <DataGridViewRow> reviewRows, int?categoryID, string categoryTitle, MainDataSet.DynamicColumnsRow dynamicCategoryColumn)
        {
            var join = from reviewDocRow in reviewRows.Select(x => x.DataBoundItem)
                       .Cast <DataRowView>().Select(x => x.Row).Cast <MainDataSet.ReviewMLDocumentsRow>()
                       join docRow in _views.MainForm.datasetMain.Documents
                       on reviewDocRow.ED_ENC_NUM equals docRow.ED_ENC_NUM
                       select new { docRow, reviewDocRow };

            foreach (var j in join)
            {
                if (categoryID != null && categoryTitle != null)
                {
                    j.reviewDocRow.Category = categoryID.Value;
                    j.docRow[dynamicCategoryColumn.Title] = categoryTitle;

                    _views.MainForm.adapterDocuments.SqlSetColumnValueByPrimaryKey(dynamicCategoryColumn.Title, categoryTitle, j.docRow.ED_ENC_NUM);
                }
                else
                {
                    j.reviewDocRow.SetCategoryNull();
                    j.docRow[dynamicCategoryColumn.Title] = DBNull.Value;

                    _views.MainForm.adapterDocuments.SqlSetColumnValueByPrimaryKey(dynamicCategoryColumn.Title, null, j.docRow.ED_ENC_NUM);
                }
            }

            _views.MainForm.datasetMain.Documents.AcceptChanges();
            _views.MainForm.adapterReviewMLDocumentsNew.Table.AcceptChanges();
        }