Example #1
0
 /// <summary>
 /// Adding a drawing in the RowHeaders for the changed or inserted rows
 /// based on yellow colors with gradient
 /// </summary>
 /// <param name="dataGrid">DataGridView</param>
 public static void AddDataRowStateDrawingInRowHeaders(this DataGridView dataGrid)
 {
     DataGridViewExtenders.AddDataRowStateDrawingInRowHeaders(dataGrid,
                                                              Color.FromArgb(0x99, 0xFF, 0xCC, 0x33),
                                                              Color.FromArgb(0x99, 0xFF, 0x66, 0x00),
                                                              true);
 }
Example #2
0
 /// <summary>
 /// Adding a drawing in the RowHeaders for the changed or inserted rows
 /// based on prefered color with gradient
 /// </summary>
 /// <param name="dataGrid">DataGridView</param>
 /// <param name="preferedColor">Color for inserted and changed rows</param>
 public static void AddDataRowStateDrawingInRowHeaders(this DataGridView dataGrid, Color preferedColor)
 {
     DataGridViewExtenders.AddDataRowStateDrawingInRowHeaders(dataGrid,
                                                              preferedColor,
                                                              preferedColor,
                                                              true);
 }
Example #3
0
 /// <summary>
 /// Preparing DataGridView for report data
 /// </summary>
 /// <param name="dataGrid">DataGridView</param>
 /// <param name="bindingSource"></param>
 public static void PrepareStyleForShowingReportData(this DataGridView dataGrid, BindingSource bindingSource)
 {
     dataGrid.AutoGenerateColumns = false;
     dataGrid.DataSource          = bindingSource;
     DataGridViewExtenders.PrepareStyleForEditingData(dataGrid);
     dataGrid.ReadOnly             = true;
     dataGrid.ColumnHeadersVisible = false;
     dataGrid.RowHeadersVisible    = false;
     dataGrid.SelectionMode        = DataGridViewSelectionMode.FullRowSelect;
     dataGrid.StandardTab          = true;
 }
Example #4
0
 /// <summary>
 /// Columns generator that works on column data descriptions (ColumnDataDescriptor)
 /// </summary>
 /// <param name="dataGrid">DataGridView</param>
 /// <param name="DataSource">Data Source to support data-binding</param>
 /// <param name="Columns">Column data descriptors</param>
 public static void GenerateColumns(this DataGridView dataGrid, object DataSource, params ColumnDataDescriptor[] Columns)
 {
     dataGrid.SuspendLayout();
     dataGrid.AutoGenerateColumns = false;
     dataGrid.Columns.Clear();
     foreach (var column in Columns)
     {
         if (column.Mode == ColumnEditorMode.TextBox)
         {
             var newColumn = new DataGridViewTextBoxColumn();
             column.GeneratedDataGridViewColumn = newColumn;
             newColumn.SortMode   = DataGridViewColumnSortMode.Automatic;
             newColumn.HeaderText = column.HeaderText;
             if (column.MaxLength.HasValue)
             {
                 newColumn.MaxInputLength = column.MaxLength.Value;
             }
             if (newColumn.MaxInputLength > 260)
             {
                 newColumn.DefaultCellStyle = new DataGridViewCellStyle()
                 {
                     WrapMode = DataGridViewTriState.True
                 }
             }
             ;
             if (column.FillWeight.HasValue)
             {
                 newColumn.AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill;
                 newColumn.FillWeight   = column.FillWeight.Value;
                 newColumn.MinimumWidth = column.HeaderText.Length * 10;
                 if (newColumn.MinimumWidth < 50)
                 {
                     newColumn.MinimumWidth = 50;
                 }
             }
             newColumn.ToolTipText      = column.ColumnName;
             newColumn.DataPropertyName = column.ColumnName;
             if (column.NullValue != null)
             {
                 if (newColumn.DefaultCellStyle != null)
                 {
                     newColumn.DefaultCellStyle.NullValue = column.NullValue;
                 }
                 else
                 {
                     newColumn.DefaultCellStyle = new DataGridViewCellStyle()
                     {
                         NullValue = column.NullValue
                     }
                 };
             }
             newColumn.ReadOnly = column.IsReadOnly;
             if (column.Style.HasValue)
             {
                 DataGridViewExtenders.SetEditorDataStyle(newColumn, column.Style.Value);
             }
             dataGrid.Columns.Add(newColumn);
             if (column.FormatValueMethod != null)
             {
                 newColumn.Tag            = column.FormatValueMethod;
                 dataGrid.CellFormatting += delegate(object sender, DataGridViewCellFormattingEventArgs e)
                 {
                     var _data = newColumn.Tag as FormatValueDelegate;
                     if (_data != null && e.ColumnIndex == newColumn.Index && e.RowIndex >= 0)
                     {
                         var _value = _data.Invoke(dataGrid.Rows[e.RowIndex].DataBoundItem, newColumn.DataPropertyName);
                         if (_value != null)
                         {
                             e.Value             = _value;
                             e.FormattingApplied = _value is string;
                         }
                     }
                 };
             }
         }
         else if (column.Mode == ColumnEditorMode.CheckBox)
         {
             var newColumn = new DataGridViewCheckBoxColumn();
             column.GeneratedDataGridViewColumn = newColumn;
             newColumn.SortMode   = DataGridViewColumnSortMode.Automatic;
             newColumn.HeaderText = column.HeaderText;
             if (column.FillWeight.HasValue)
             {
                 newColumn.AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill;
                 newColumn.FillWeight   = column.FillWeight.Value;
                 newColumn.MinimumWidth = column.HeaderText.Length * 10;
                 if (newColumn.MinimumWidth < 50)
                 {
                     newColumn.MinimumWidth = 50;
                 }
             }
             newColumn.ToolTipText      = column.ColumnName;
             newColumn.ThreeState       = column.IsNull;
             newColumn.DataPropertyName = column.ColumnName;
             newColumn.ReadOnly         = column.IsReadOnly;
             dataGrid.Columns.Add(newColumn);
         }
         else if (column.Mode == ColumnEditorMode.ListBox)
         {
             DataGridViewColumn newColumn;
             if (column.IsReadOnly)
             {
                 var _newColumn = new DataGridViewTextBoxColumn();
                 newColumn = _newColumn;
             }
             else
             {
                 var _newColumn = new DataGridViewLinkColumn();
                 _newColumn.TrackVisitedState = false;
                 _newColumn.LinkBehavior      = LinkBehavior.HoverUnderline;
                 newColumn = _newColumn;
             }
             column.GeneratedDataGridViewColumn = newColumn;
             newColumn.SortMode   = DataGridViewColumnSortMode.Automatic;
             newColumn.HeaderText = column.HeaderText;
             if (column.FillWeight.HasValue)
             {
                 newColumn.AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill;
                 newColumn.FillWeight   = column.FillWeight.Value;
                 newColumn.MinimumWidth = column.HeaderText.Length * 10;
                 if (newColumn.MinimumWidth < 50)
                 {
                     newColumn.MinimumWidth = 50;
                 }
             }
             newColumn.ToolTipText      = column.ColumnName;
             newColumn.DataPropertyName = column.ColumnName;
             newColumn.ReadOnly         = true;
             if (column.Style.HasValue)
             {
                 DataGridViewExtenders.SetEditorDataStyle(newColumn, column.Style.Value);
             }
             newColumn.Tag = Tuple.Create(column.DataSource, column.ValueMember, column.DisplayMember, column.GetListBoxItemsMethod, column.FormatValueMethod);
             dataGrid.Columns.Add(newColumn);
             dataGrid.CellFormatting += delegate(object sender, DataGridViewCellFormattingEventArgs e)
             {
                 var _data = newColumn.Tag as Tuple <object, string, string, GetListBoxItemsDelegate, FormatValueDelegate>;
                 if (_data != null && e.ColumnIndex == newColumn.Index && e.RowIndex >= 0)
                 {
                     if (_data.Item5 != null)
                     {
                         var _value = _data.Item5.Invoke(dataGrid.Rows[e.RowIndex].DataBoundItem, newColumn.DataPropertyName);
                         if (_value != null)
                         {
                             e.Value             = _value;
                             e.FormattingApplied = _value is string;
                         }
                     }
                     else if (dataGrid.Rows[e.RowIndex].DataBoundItem is DataRowView && (_data.Item1 is DataView || _data.Item1 is DataTable))
                     {
                         var dataBoundItem = (DataRowView)dataGrid.Rows[e.RowIndex].DataBoundItem;
                         var _data1        = _data.Item1 is DataView ? ((DataView)_data.Item1).Table : (DataTable)_data.Item1;
                         var _row          = _data1.Rows.Find(dataBoundItem[newColumn.DataPropertyName]);
                         e.Value             = _row != null ? _row[_data.Item3].ToString() : string.Empty;
                         e.FormattingApplied = true;
                     }
                 }
             };
             if (!column.IsReadOnly)
             {
                 dataGrid.CellClick += delegate(object sender, DataGridViewCellEventArgs e)
                 {
                     var _data = newColumn.Tag as Tuple <object, string, string, GetListBoxItemsDelegate, FormatValueDelegate>;
                     if (_data != null && e.ColumnIndex == newColumn.Index && e.RowIndex >= 0 && dataGrid.Rows[e.RowIndex].DataBoundItem is DataRowView)
                     {
                         var    dataBoundItem = (DataRowView)dataGrid.Rows[e.RowIndex].DataBoundItem;
                         object items         = _data.Item1;
                         bool   agc           = false;
                         if (_data.Item4 != null)
                         {
                             items = _data.Item4.Invoke();
                             if (items == null)
                             {
                                 FormServices.ShowError("No data exists", true);
                                 return;
                             }
                             agc = true;
                         }
                         var row = SelectItemForm.GetSelectedRow(items, _data.Item2, _data.Item3, dataBoundItem[newColumn.DataPropertyName], agc);
                         if (row != null)
                         {
                             dataBoundItem.BeginEdit();
                             dataBoundItem[newColumn.DataPropertyName] = row[_data.Item2];
                             dataBoundItem.EndEdit();
                         }
                     }
                 }
             }
             ;
         }
         else if (column.Mode == ColumnEditorMode.ComboBox)
         {
             var newColumn = new DataGridViewComboBoxColumn();
             column.GeneratedDataGridViewColumn       = newColumn;
             newColumn.DisplayStyleForCurrentCellOnly = true;
             newColumn.DisplayStyle = column.IsReadOnly ? DataGridViewComboBoxDisplayStyle.Nothing : DataGridViewComboBoxDisplayStyle.DropDownButton;
             newColumn.AutoComplete = true;
             if (column.IsNull)
             {
                 newColumn.DefaultCellStyle = new DataGridViewCellStyle()
                 {
                     DataSourceNullValue = DBNull.Value
                 }
             }
             ;
             newColumn.SortMode   = DataGridViewColumnSortMode.Automatic;
             newColumn.HeaderText = column.HeaderText;
             if (column.FillWeight.HasValue)
             {
                 newColumn.AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill;
                 newColumn.FillWeight   = column.FillWeight.Value;
                 newColumn.MinimumWidth = column.HeaderText.Length * 10;
                 if (newColumn.MinimumWidth < 50)
                 {
                     newColumn.MinimumWidth = 50;
                 }
             }
             newColumn.ToolTipText      = column.ColumnName;
             newColumn.DataPropertyName = column.ColumnName;
             newColumn.DataSource       = column.DataSource;
             if (!string.IsNullOrWhiteSpace(column.ValueMember))
             {
                 newColumn.ValueMember = column.ValueMember;
             }
             if (!string.IsNullOrWhiteSpace(column.DisplayMember))
             {
                 newColumn.DisplayMember = column.DisplayMember;
             }
             newColumn.ReadOnly = column.IsReadOnly;
             dataGrid.Columns.Add(newColumn);
             if (column.FormatValueMethod != null)
             {
                 newColumn.Tag            = column.FormatValueMethod;
                 dataGrid.CellFormatting += delegate(object sender, DataGridViewCellFormattingEventArgs e)
                 {
                     var _data = newColumn.Tag as FormatValueDelegate;
                     if (_data != null && e.ColumnIndex == newColumn.Index && e.RowIndex >= 0)
                     {
                         var _value = _data.Invoke(dataGrid.Rows[e.RowIndex].DataBoundItem, newColumn.DataPropertyName);
                         if (_value != null)
                         {
                             e.Value             = _value;
                             e.FormattingApplied = _value is string;
                         }
                     }
                 };
             }
         }
     }
     dataGrid.DataSource = DataSource;
     dataGrid.ResumeLayout(false);
 }