Completed
Last Updated: 05 Oct 2016 14:00 by ADMIN
Workaround: 

 public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();

            this.radGridView1.DataSource = this.GetData();
            this.radGridView1.AutoSizeColumnsMode = GridViewAutoSizeColumnsMode.Fill;

            ((GridViewDateTimeColumn)this.radGridView1.Columns["Date"]).FormatString = "{0: yyyy-MM-dd hh:mm:ss.fff tt}";
        }

        private DataTable GetData()
        {
            DataTable dt = new DataTable();
            dt.Columns.Add("Id", typeof(int));
            dt.Columns.Add("Name", typeof(string));
            dt.Columns.Add("Date", typeof(DateTime));
            dt.Columns.Add("Bool", typeof(bool));
            for (int i = 0; i < 100; i++)
            {
                dt.Rows.Add(i, "Name " + i, DateTime.Now.AddDays(i), i % 2 == 0);
            }

            return dt;
        }
    }

 public class MyRadGridView : RadGridView
    {
        public override string ThemeClassName
        {
            get
            {
                return typeof(RadGridView).FullName;
            }
        }

        protected override RadGridViewElement CreateGridViewElement()
        {
            return new MyRadGridViewElement();
        }
    }

 public class MyRadGridViewElement : RadGridViewElement
    {
        protected override Type ThemeEffectiveType
        {
            get
            {
                return typeof(MyRadGridViewElement);
            }
        }

        protected override MasterGridViewTemplate CreateTemplate()
        {
            return new MyMasterGridViewTemplate();
        }
    }

 public class MyMasterGridViewTemplate : MasterGridViewTemplate
    {
        public override void Copy()
        {
            base.Copy();

            GridViewCellInfo[] cells = null;
            if (this.SelectionMode == GridViewSelectionMode.CellSelect)
            {
                cells = new GridViewCellInfo[this.SelectedCells.Count];
                this.SelectedCells.CopyTo(cells, 0);
            }
            else if (this.SelectionMode == GridViewSelectionMode.FullRowSelect)
            {
                GridViewDataRowInfo row = this.SelectedRows[0] as GridViewDataRowInfo;
                if (this.SelectedRows.Count == 1 && row.ViewTemplate.CurrentColumn != null)
                {
                    cells = new GridViewCellInfo[row.Cells.Count];
                    for (int i = 0; i < row.Cells.Count; i++)
                    {
                        cells[i] = row.Cells[i];
                    }
                }
            }

            if (Clipboard.GetData(DataFormats.Text) != null)
            {
                string data = Clipboard.GetData(DataFormats.Text).ToString();
                if (data != string.Empty && cells != null)
                {
                    var values = data.Split(new char[] { '\t' }, StringSplitOptions.RemoveEmptyEntries);

                    StringBuilder sb = new StringBuilder();
                    foreach (string value in values)
                    {
                        DateTime date;
                        if (DateTime.TryParse(value, out date))
                        {
                            string baseFormat = "yyyy-MM-dd HH:mm tt";
                            foreach (var cell in cells)
                            {
                                if (cell.ColumnInfo is GridViewDateTimeColumn && ((DateTime)cell.Value).ToString(baseFormat) == date.ToString(baseFormat))
                                {
                                    sb.Append(string.Format(((GridViewDateTimeColumn)cell.ColumnInfo).FormatString, cell.Value) + "\t");
                                    break;
                                }
                            }
                        }
                        else
                        {
                            sb.Append(value + "\t");
                        }
                    }

                    Clipboard.Clear();
                    Clipboard.SetData(DataFormats.Text, sb.ToString());
                }
            }
        }
    }
Completed
Last Updated: 05 Oct 2016 10:38 by ADMIN
To reproduce: follow the steps illustrated in the attached gif file.
Completed
Last Updated: 04 Oct 2016 08:22 by ADMIN
Please refer to the attached screenshot.

To reproduce:

public Form1()
{
    InitializeComponent(); 

    DataTable dt = new DataTable();
    dt.Columns.Add("Id", typeof(int));
    dt.Columns.Add("Name", typeof(string));

    for (int i = 0; i < 5; i++)
    {
        dt.Rows.Add(i, "Item" + i);
    }

    Random rand = new Random();
    DataTable dt2 = new DataTable();
    dt2.Columns.Add("Id", typeof(int));
    dt2.Columns.Add("Name2", typeof(string));
    dt2.Columns.Add("ParentId", typeof(int));
    for (int i = 0; i < 20; i++)
    {
        dt2.Rows.Add(i, "Child Item" + i, rand.Next(0, 5));
    }

    radGridView1.DataSource = dt;
    radGridView1.AutoSizeColumnsMode = GridViewAutoSizeColumnsMode.Fill;
    GridViewTemplate template = new GridViewTemplate();
    template.DataSource = dt2;
    template.AutoSizeColumnsMode = GridViewAutoSizeColumnsMode.Fill;
    radGridView1.MasterTemplate.Templates.Add(template);
    template.Columns["ParentId"].IsVisible = false;

    GridViewRelation relation = new GridViewRelation(radGridView1.MasterTemplate);
    relation.ChildTemplate = template;
    relation.RelationName = "MasterDetail";
    relation.ParentColumnNames.Add("Id");
    relation.ChildColumnNames.Add("ParentId");
    radGridView1.Relations.Add(relation);

    this.radGridView1.EnableFiltering = true;
    this.radGridView1.ShowFilteringRow = false;
    this.radGridView1.ShowHeaderCellButtons = true;
}

Workaround: change the Name property of the column in order to avoid duplicated columns: 

template.Columns["Name"].Name = "Name2";
Unplanned
Last Updated: 04 Oct 2016 08:20 by ADMIN
To reproduce: please refer to the attached gif file demonstrating how to reproduce the issue with the Demo application.

Workaround: use the basic filtering.
Unplanned
Last Updated: 04 Oct 2016 06:27 by ADMIN
ADMIN
Created by: Dess | Tech Support Engineer, Principal
Comments: 0
Category: GridView
Type: Feature Request
3
Repeat the master template headers right after the end of an expanded detail template. The purpose is clarity for the end user.
Completed
Last Updated: 28 Sep 2016 06:40 by ADMIN
To reproduce:

public Form1()
{
    InitializeComponent();
    List<Item> items = new List<Item>();
    for (int i = 0; i < 10; i++)
    {
        items.Add(new Item(i,"Item" + i,Color.Red));
    }
    this.radGridView1.DataSource = items;
    this.radGridView1.AutoSizeColumnsMode = Telerik.WinControls.UI.GridViewAutoSizeColumnsMode.Fill;
    this.radGridView1.CellValidating += radGridView1_CellValidating;
}

private void radGridView1_CellValidating(object sender, Telerik.WinControls.UI.CellValidatingEventArgs e)
{
    if (e.ActiveEditor != null && e.ActiveEditor is GridColorPickerEditor)
    {
        Color c = (Color)e.Value;
        if (c == Color.Red)
        {
            e.Cancel = true;
            Console.WriteLine("Red is not allowed!");
        }
    }
}

public class Item
{
    public int Id { get; set; }

    public string Name { get; set; }

    public Color Color { get; set; }

    public Item(int id, string name, Color color)
    {
        this.Id = id;
        this.Name = name;
        this.Color = color;
    }
}

Steps:
1. Activate the editor for the Color cell.
2. Leave the color as it
3. Press the Enter key. The CellValidating event is fired twice.

Note: it seems that when the color text is selected, the event is fired twice.

Declined
Last Updated: 27 Sep 2016 07:28 by ADMIN
Please refer to the attached screenshot.

Workaround:

public Form1()
{
    InitializeComponent();

    DataTable dt = new DataTable();
    dt.Columns.Add("Id");
    dt.Columns.Add("Name");
    for (int i = 0; i < 5; i++)
    {
        dt.Rows.Add(i, "Item" + i);
    }

    this.radGridView1.DataSource = dt;
    this.radGridView1.AutoSizeColumnsMode = Telerik.WinControls.UI.GridViewAutoSizeColumnsMode.Fill;

    this.radGridView1.AllowSearchRow = true;
    this.radGridView1.SearchRowPosition = Telerik.WinControls.UI.SystemRowPosition.Bottom;

    this.radGridView1.ViewDefinition = new CustomTableViewDefition();
}

public class CustomTableViewDefition : TableViewDefinition
{
    public override IRowView CreateViewUIElement(GridViewInfo viewInfo)
    {
        return new CustomTableElement();
    }
}

public class CustomTableElement : GridTableElement
{
    protected override RowsContainerElement CreateViewElement()
    {
        return new CustomRowsContainerElement();
    }
}

public class CustomRowsContainerElement : RowsContainerElement
{
    protected override SizeF ArrangeOverride(SizeF finalSize)
    {
        float y = 0;

        this.TopPinnedRows.Arrange(new RectangleF(0, y, finalSize.Width, this.TopPinnedRows.DesiredSize.Height));
        y += this.TopPinnedRows.DesiredSize.Height + ElementSpacing;

        this.ScrollableRows.Arrange(new RectangleF(0, y, finalSize.Width, this.ScrollableRows.DesiredSize.Height));
        y += this.ScrollableRows.DesiredSize.Height + ElementSpacing;

        this.BottomPinnedRows.Arrange(new RectangleF(0, finalSize.Height - this.BottomPinnedRows.DesiredSize.Height,
            finalSize.Width, this.BottomPinnedRows.DesiredSize.Height));

        return finalSize;
    }
}
Completed
Last Updated: 26 Sep 2016 07:34 by ADMIN
To reproduce:

public Form1()
{
    InitializeComponent();

    GridViewComboBoxColumn comboCol = new GridViewComboBoxColumn();         
    comboCol.DataSource = InitComboActive();
    comboCol.ValueMember = "ActiveCode";
    comboCol.DisplayMember = "ActiveDsc";
    comboCol.FieldName = "ActiveCode";

    this.radGridView1.Columns.Add(comboCol);

    this.radGridView1.AutoGenerateColumns = false;
    BindRadGrid();
    this.radGridView1.CellValueChanged += radGridView1_CellValueChanged;
}

private void radGridView1_CellValueChanged(object sender, GridViewCellEventArgs e)
{
    BindRadGrid();
}

private void BindRadGrid()
{
    this.radGridView1.DataSource = null;
    this.radGridView1.DataSource = InitComboData();
}

private DataTable InitComboActive()
{
    DataTable dt = new DataTable("DtActive");
    dt.Columns.Add("ActiveCode");
    dt.Columns.Add("ActiveDsc");

    dt.Rows.Add("0", "InActive");
    dt.Rows.Add("1", "Active");

    return dt;
}

private DataTable InitComboData()
{
    DataTable dt = new DataTable("DtData");
    dt.Columns.Add("Host");
    dt.Columns.Add("ActiveCode");
    dt.Columns.Add("ActiveDsc");
    
    dt.Rows.Add("Host A", "0", "InActive");
    dt.Rows.Add("Host B", "1", "Active");

    return dt;
}

Workaround: use the RadGridView.CellEndEdit instead for rebinding. 
Workaround 2: use the CellValidated event:
private void radGridView1_CellValidated(object sender, CellValidatedEventArgs e)
{
    if (e.Row is GridViewDataRowInfo)
    {
        BindRadGrid();
    }
}

Completed
Last Updated: 20 Sep 2016 07:33 by ADMIN
ADMIN
Created by: Dess | Tech Support Engineer, Principal
Comments: 0
Category: GridView
Type: Bug Report
0
When you export ht grid content to HTML, the exported table contains an 'width' attribute set to 0. It is not possible to change this attribute. This prevents the HTML to be loaded correctly in RadRichTextEditor later.
Completed
Last Updated: 20 Sep 2016 06:41 by ADMIN
To reproduce:

 public RadForm1()
 {
     InitializeComponent();
     
     DataTable master = new DataTable();
     master.Columns.Add("ID", typeof(int));
     master.Columns.Add("test", typeof(string));
     
     for (int i = 0; i < 500; i++)
     {
         master.Rows.Add(i, "Row " + i);
     }

     radGridView1.DataSource = master;

     radLabel1.Text = "RadGridView: AutoSizeRows = " + ((radGridView1.AutoSizeRows) ? "True" : "False");
 }

 private void radButton1_Click(object sender, EventArgs e)
 {
     radGridView1.TableElement.ScrollToRow(radGridView1.MasterTemplate.Rows[200]);
 }

 private void radButton2_Click(object sender, EventArgs e)
 {
     radGridView1.AutoSizeRows = !radGridView1.AutoSizeRows;

     radLabel1.Text = "RadGridView: AutoSizeRows = " + ((radGridView1.AutoSizeRows) ? "True" : "False");
 }


Workaround:

this.radGridView1.ViewDefinition = new CustomTableViewDefinition();


        public class CustomTableViewDefinition : TableViewDefinition
        {
            public override IRowView CreateViewUIElement(GridViewInfo viewInfo)
            {
                return new CustomGridTableElement();
            }
        }

        public class CustomGridTableElement : GridTableElement
        {
              protected override Type ThemeEffectiveType     
                 { 
                    get    
                              { 
                                     return typeof(GridTableElement);     
                               }
                   }
            public override void ScrollToRow(GridViewRowInfo rowInfo)
            {
                if (rowInfo == null || rowInfo.IsPinned || !rowInfo.IsVisible || rowInfo is GridViewDetailsRowInfo)
                {
                    return;
                }

                this.ViewElement.InvalidateMeasure();
                this.ViewElement.UpdateLayout();

                if (GridViewElement.AutoSizeRows || (ViewTemplate.Templates.Count > 0 && rowInfo.ViewTemplate.Parent != null))
                {
                    ScrollToRowCore(rowInfo, false);

                    return;
                }

                this.RowScroller.ScrollToItem(rowInfo, false);
                this.UpdateLayout();
            }

            private void ScrollToRowCore(GridViewRowInfo rowInfo, bool ensureVisible)
            {
                if (!this.GridViewElement.UseScrollbarsInHierarchy && this.ViewInfo.ParentRow != null)
                {
                    if (ensureVisible)
                    {
                        this.GridViewElement.TableElement.EnsureRowVisible(rowInfo);
                    }
                    else
                    {
                        this.GridViewElement.TableElement.ScrollToRow(rowInfo);
                    }
                    return;
                }

                if (!this.IsInValidState(true) || this.VScrollBar.LargeChange == 0)
                {
                    return;
                }

                RadControl control = this.ElementTree.Control as RadControl;
                if (control != null)
                {
                    control.SuspendUpdate();
                }

                int oldValue = this.VScrollBar.Value;
                GridRowElement rowElement = GetChildRowElement(rowInfo);
                
                if (rowElement == null && this.PageViewMode == PageViewMode.ExplorerBar)
                {
                    if (control != null)
                    {
                        control.ResumeUpdate();
                    }

                    return;
                }

                while (this.VScrollBar.Value < this.VScrollBar.Maximum)
                {
                    if (rowElement == null)
                    {
                        rowElement = GetChildRowElement(rowInfo);
                    }
                    if (rowElement != null)
                    {
                        ScrollToPartiallyVisibleRow(rowElement, ensureVisible);
                        break;
                    }
                    else
                    {
                        bool scrollRangeChanged = SetScrollValue(this.VScrollBar, this.VScrollBar.Value + this.VScrollBar.SmallChange);
                        if (this.VScrollBar.Value >= this.VScrollBar.Maximum - this.VScrollBar.LargeChange + 1 && !scrollRangeChanged)
                        {
                            SetScrollValue(this.VScrollBar, oldValue);
                            break;
                        }
                    }
                }

                if (oldValue == this.VScrollBar.Minimum || rowElement != null)
                {
                    if (control != null)
                    {
                        control.ResumeUpdate();
                    }
                    return;
                }

                SetScrollValue(this.VScrollBar, 0);

                while (this.VScrollBar.Value < oldValue)
                {
                    if (rowElement == null)
                    {
                        rowElement = GetChildRowElement(rowInfo);
                    }
                    if (rowElement != null)
                    {
                        ScrollToPartiallyVisibleRow(rowElement, ensureVisible);
                        break;
                    }
                    else
                    {
                        bool scrollRangeChanged = SetScrollValue(this.VScrollBar, this.VScrollBar.Value + this.VScrollBar.SmallChange);
                        if (this.VScrollBar.Value >= this.VScrollBar.Maximum - this.VScrollBar.LargeChange + 1 && !scrollRangeChanged)
                        {
                            SetScrollValue(this.VScrollBar, oldValue);
                            break;
                        }
                    }
                }

                if (control != null)
                {
                    control.ResumeUpdate();
                }
            }

            private GridRowElement GetChildRowElement(GridViewRowInfo rowInfo)
            {
                if (rowInfo.ViewInfo == this.ViewInfo)
                {
                    return GetRowElement(rowInfo);
                }
                else
                {
                    GridTableElement tableElement = GridViewElement.GetRowView(rowInfo.ViewInfo) as GridTableElement;
                    if (tableElement != null)
                    {
                        return tableElement.GetRowElement(rowInfo);
                    }
                }
                return null;
            }

            private void ScrollToPartiallyVisibleRow(GridRowElement rowElement, bool ensureVisible)
            {
                int delta = 0;

                while ((rowElement.ControlBoundingRectangle.Y < ViewElement.ScrollableRows.ControlBoundingRectangle.Y &&
                        rowElement.ControlBoundingRectangle.Bottom > ViewElement.ScrollableRows.ControlBoundingRectangle.Y) ||
                       (rowElement.ControlBoundingRectangle.Y < ViewElement.ScrollableRows.ControlBoundingRectangle.Bottom &&
                        rowElement.ControlBoundingRectangle.Bottom > ViewElement.ScrollableRows.ControlBoundingRectangle.Bottom))
                {
                    if (rowElement.ControlBoundingRectangle.Y < ViewElement.ScrollableRows.ControlBoundingRectangle.Y &&
                        rowElement.ControlBoundingRectangle.Bottom > ViewElement.ScrollableRows.ControlBoundingRectangle.Y)
                    {
                        delta = ViewElement.ScrollableRows.ControlBoundingRectangle.Y - rowElement.ControlBoundingRectangle.Y;
                        SetScrollValue(this.VScrollBar, this.VScrollBar.Value - delta);

                        return;
                    }

                    if (rowElement.ControlBoundingRectangle.Y < ViewElement.ScrollableRows.ControlBoundingRectangle.Bottom &&
                        rowElement.ControlBoundingRectangle.Bottom > ViewElement.ScrollableRows.ControlBoundingRectangle.Bottom)
                    {
                        delta = rowElement.ControlBoundingRectangle.Top - ViewElement.ScrollableRows.ControlBoundingRectangle.Top;
                        SetScrollValue(this.VScrollBar, this.VScrollBar.Value + delta);

                        return;
                    }

                    if (ensureVisible)
                    {
                        delta = rowElement.ControlBoundingRectangle.Bottom - ViewElement.ScrollableRows.ControlBoundingRectangle.Bottom;

                        if (delta < 0)
                        {
                            break;
                        }
                    }
                    else
                    {
                        delta = rowElement.ControlBoundingRectangle.Y - ViewElement.ScrollableRows.ControlBoundingRectangle.Y;

                        if (delta < 0)
                        {
                            delta = 0;
                        }
                    }

                    bool scrollRangeChanged = SetScrollValue(this.VScrollBar, this.VScrollBar.Value + delta);

                    if (this.VScrollBar.Value >= this.VScrollBar.Maximum - this.VScrollBar.LargeChange + 1 || !scrollRangeChanged)
                    {
                        break;
                    }
                }
            }
            
            private bool SetScrollValue(RadScrollBarElement scrollbar, int newValue)
            {
                int max = this.VScrollBar.Maximum;

                if (newValue > scrollbar.Maximum - scrollbar.LargeChange + 1)
                {
                    newValue = scrollbar.Maximum - scrollbar.LargeChange + 1;
                }

                if (newValue < scrollbar.Minimum)
                {
                    newValue = scrollbar.Minimum;
                }

                scrollbar.Value = newValue;
                this.UpdateLayout();

                return max != this.VScrollBar.Maximum;
            }
        }
  
Completed
Last Updated: 12 Sep 2016 11:14 by ADMIN
Introduce a property to change symbol used to separate summaryItems in SummaryRowGroupHeaders.
Completed
Last Updated: 12 Sep 2016 05:21 by ADMIN
To reproduce:
- Bind the grid to progress binding source at design time. 
- Locate GroupDescriptors in Properties and click the ellipsis button to open the GroupDescriptor Collection Editor.
- Click Add and select the new item.
- Select the GroupNames collection to open the SortDescriptor Collection Editor.
- Click Add.
- An exception is thrown and the UI freezes.

Workaround:
Add descriptors at runime.
Completed
Last Updated: 08 Sep 2016 08:25 by Luigi
To reproduce:
- Assing context menu using one of the default properties.
Completed
Last Updated: 05 Sep 2016 17:06 by ADMIN
To reproduce:

Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load 
    Me.ProductsTableAdapter.Fill(Me.NwindDataSet.Products) 
    Me.CategoriesTableAdapter.Fill(Me.NwindDataSet.Categories)

    Me.ProductsTableAdapter.Fill(Me.NwindDataSet.Products)
    Me.CategoriesTableAdapter.Fill(Me.NwindDataSet.Categories)
    RadGridView1.AutoGenerateHierarchy = True
    RadGridView1.DataSource = Me.NwindDataSet
    RadGridView1.DataMember = "Categories"
End Sub

Private Sub RadButton1_Click(sender As Object, e As EventArgs) Handles RadButton1.Click
    Dim style As New GridPrintStyle()
    style.PrintHierarchy = True
    style.HierarchyIndent = 20
    style.ChildViewPrintMode = ChildViewPrintMode.SelectViewToPrint
    Me.RadGridView1.PrintStyle = style
    Me.RadGridView1.PrintPreview()
End Sub

Please refer to the attached gif file.

Workaround:

Private Sub RadButton1_Click(sender As Object, e As EventArgs) Handles RadButton1.Click

    Me.RadGridView1.PrintSettingsDialogFactory = New CustomGridViewPrintSettingsDialogFactory()

    Dim style As New GridPrintStyle()
    style.PrintHierarchy = True
    style.HierarchyIndent = 20
    style.ChildViewPrintMode = ChildViewPrintMode.SelectViewToPrint
    Me.RadGridView1.PrintStyle = style
    Me.RadGridView1.PrintPreview()
End Sub

Public Class CustomGridViewPrintSettingsDialog
Inherits GridViewPrintSettingsDialog 

    Sub New(document As RadPrintDocument)
        MyBase.New(document)
    End Sub
     
    Protected Overrides Sub LoadSettings()
        MyBase.LoadSettings()

        Dim gridView As RadGridView = TryCast(Me.PrintDocument.AssociatedObject, RadGridView)
        Me.printStyleSettingControl.PrintStyle.PrintHierarchy =gridView.PrintStyle.PrintHierarchy 
    End Sub
End Class

Public Class CustomGridViewPrintSettingsDialogFactory
    Implements IPrintSettingsDialogFactory

    Public Function CreateDialog(document As RadPrintDocument) As Form Implements IPrintSettingsDialogFactory.CreateDialog
        Return New CustomGridViewPrintSettingsDialog(document)
    End Function
End Class
Unplanned
Last Updated: 02 Sep 2016 12:28 by ADMIN
To reproduce:

public Form1()
{
    InitializeComponent();
    this.radGridView1.Columns.Add("Name");
    this.radGridView1.Columns.Add("ID");

    this.radGridView1.RowsChanged += radGridView1_RowsChanged;
}

private void radGridView1_RowsChanged(object sender, GridViewCollectionChangedEventArgs e)
{
    Console.WriteLine(e.Action);
    if (e.Action == Telerik.WinControls.Data.NotifyCollectionChangedAction.Add)
    {
        GridViewRowInfo row = e.NewItems[0] as GridViewRowInfo;
        row.Cells["ID"].Value = this.radGridView1.Rows.Count;
    }
}

private void radButton1_Click(object sender, EventArgs e)
{
    this.radGridView1.Rows.Add("Item" + this.radGridView1.Rows.Count);
}

Note: the first firing of the RowsChanged event used to be with Action=Add.
Completed
Last Updated: 23 Aug 2016 11:38 by ADMIN
Please refer to the attached sample project.
Completed
Last Updated: 23 Aug 2016 10:07 by ADMIN
Workaround: change the name of the column
this.radGridView1.Columns["Table:Name"].Name = "Table|Name";
Declined
Last Updated: 19 Aug 2016 11:44 by ADMIN
When you set a RadGridView's SelectionMode to GridViewSelectionMode.CellSelect and then you highlight full rows by using the row header, the SelectedRows collection is empty.  Telerik support informed me this is "as expected" and that I should use "SelectedCells" collection when using the CellSelect Mode.  While this is a decent workaround I don't see why SelectedRows collection can't be filled when the entire row is actually highlighted.  
Unplanned
Last Updated: 17 Aug 2016 08:29 by ADMIN
Create a DataTable with columns Column1, Column2, Column3, Column4, Column5, and bound to RadGridView. Create a second DataTable with columns Column1, Column2a, Column3, Column4, Column5, and re-bind the RadGridView to this DataTable. Instead of the columns appearing in the same order as they are in the second DataTable, they show up as Column1, Column3, Column4, Column5, Column2a in the RadGridView. 
Declined
Last Updated: 10 Aug 2016 15:47 by Robert Gray
To reproduce:

GridViewImageColumn imageColumn = new GridViewImageColumn();
imageColumn.Name = "ImageColumn";
imageColumn.FieldName = "ImageColumn";
imageColumn.HeaderText = "Picture";
radGridView1.MasterTemplate.Columns.Add(imageColumn);

List<classBinding> databinding = new List<classBinding>();
for (int i = 0; i < 35000; i++)
{
    databinding.Add(new classBinding()
    {
        ImageColumn = Properties.Resources.Alarm2, 
    });
}
radGridView1.DataSource = databinding;

 public class classBinding
        {
            public System.Drawing.Bitmap ImageColumn { get; set; } 
        }