To reproduce:
Sub New()
    InitializeComponent()
    Dim dt As New DataTable()
    For index = 1 To 13
        If index = 4 Then
            dt.Columns.Add("Col" & index, Type.GetType("System.Int32"))
        Else
            dt.Columns.Add("Col" & index)
        End If
    Next
    Dim rand As New Random
    For index = 1 To 9000
        Dim newRow As DataRow = dt.NewRow()
        For Each col As DataColumn In dt.Columns
            If col.ColumnName = "Col4" Then
                newRow(col.ColumnName) = rand.Next(2, 1000).ToString()
            Else
                newRow(col.ColumnName) = "Data" & index.ToString() & "." & dt.Columns.IndexOf(col).ToString()
            End If
        Next
        dt.Rows.Add(newRow)
    Next
    Me.RadGridView1.DataSource = dt
    Me.RadGridView1.AutoSizeColumnsMode = Telerik.WinControls.UI.GridViewAutoSizeColumnsMode.Fill
    Me.RadGridView1.Columns.RemoveAt(3)
    Dim list As New List(Of CustomerMaster)
    For index = 1 To 1000
        list.Add(New CustomerMaster((index + 1), "Name" & (1000 - index + 1).ToString()))
    Next
    Dim CustomerMaster_IDColumn As GridViewComboBoxColumn = New GridViewComboBoxColumn
        With CustomerMaster_IDColumn
        .Name = "CustomerMaster_ID"
        .HeaderText = "Customer Master"
        .DataSource = list
        .ValueMember = "Id"
        .DisplayMember = "Name"
        .FieldName = "Col4"
        .Width = 200
        .DisplayMemberSort = True
        .DropDownStyle = Telerik.WinControls.RadDropDownStyle.DropDownList
    End With
    Me.RadGridView1.Columns.Insert(3, CustomerMaster_IDColumn)
End Sub
Public Class CustomerMaster
    Private _id As String
    Private _name As String
    Public Sub New(id As String, name As String)
        Me._id = id
        Me._name = name
    End Sub
    Public Property Id() As String
        Get
            Return _id
        End Get
        Set(ByVal value As String)
            _id = value
        End Set
    End Property
    Public Property Name() As String
        Get
            Return _name
        End Get
        Set(ByVal value As String)
            _name = value
        End Set
    End Property
End Class
			Steps to reproduce: 1. Add a grid with several columns, so there is horizontal scroll bar 2. Add an image to the grid ImageList 3. In the CellFormatting assign the ImageKey of a cell to a value You will notice that the images are not applied initially. You have to scroll the column where you apply the images out of view and bring it back in to see the images. WORKAROUND Instead of setting the ImageKey property, set the Image property to the corresponding image from the image list.
To reproduce:
- Filer twice by a single column with Excel-like filtering.
- The second time InvalidCastException will occur.
Workaround:
- Create custom columns and override the GetDistinctValues method.
public class MyColumn : GridViewTextBoxColumn
{
    protected override GridViewColumnValuesCollection GetDistinctValues()
    {
        int index = this.Index;
        if (index >= 0)
        {
            GridViewColumnValuesCollection distinctValues = new GridViewColumnValuesCollection();
            foreach (GridViewRowInfo row in this.OwnerTemplate.Rows)
            {
               
                object cellValue = row.Cells[index].Value;
                if (!distinctValues.Contains(cellValue))
                {
                    distinctValues.Add(cellValue);
                }
            }
            if (distinctValues.Count > 0)
            {
                return distinctValues;
            }
        }
        return null;
    }
}
			To reproduce: - Add a grid with some columns to a blank form (the rows should not fill the entire space). - Press and hold the left mouse button, the move the mouse to the empty area of the grid. - Continue to move the mouse and you will notice the event is fired several times. Workaround: - use the CurrentCellChanged event.
To reproduce: - Open the examples solution in Visual Studio. - Navigate to hierarchy example. - Enable the excel like filtering for all templates. - Start the application and open the hierarchy first look example. - Add a new row in the second template. - Add such filter that only the newly added row will remain visible. - Expand the new added row and try to add new row to it.
To reproduce:
public Form1()
{
    InitializeComponent();
    
    radGridView1.Columns.Add("Id");
    radGridView1.Columns.Add("ParentID");
    radGridView1.Columns.Add("Name");
    radGridView1.Relations.AddSelfReference(radGridView1.MasterTemplate, "Id", "ParentID");
    for (int id = 1; id <= 3; id++)
    {
        radGridView1.MasterTemplate.Rows.Add(id, 0, "Node_" + id);
        for (int iChild = 1; iChild <= 5; iChild++)
        {
            int childId = id * 100 + iChild;
            radGridView1.MasterTemplate.Rows.Add(childId, id, "ChildNode_" + childId);
        }
    }
    foreach (GridViewHierarchyRowInfo row in this.radGridView1.Rows)
    {
       row.IsExpanded = true;
    }
}
			RadGridView should support indexed full-text search out of the box.
A few threads have been posted over the years to ask about natural sorting, which is clicking a column header to go Ascending, Descending, then back to the default unsorted mode on the third click. I looked around for a tri-state or three-state toggle and didn't find any info. Very helpful but incomplete info is found here and here, so I thought I'd provide C# code to help anyone else looking to do this. Some threads refer to MasterGridViewTemplate.AllowNaturalSort but that property no longer exists. My code is adapted from the second forum posting referenced. It looks like the library has changed since Sean wrote his code. Telerik.WinControls.Data.SortDescriptor.Direction is of type System.ComponentModel.ListDirection, and that enum only has two values. So the Boolean _sorted is used - if the grid is sorted in ascending or descending order, then use the sort order, but if we click past descending order, set _sorted to false (natural sort!) and clear the SortDescriptors. Of course clearing SortDescriptors means this only works with single column sorting. Maybe someone will follow-up here with a solution that works with multiple columns.
i use a radgridview whits does not allow edit. i press control-v at a cell and it pastes to the cellvalue the last copied to clipboard text. is there a way to do that only if the grid allows edit?
NullReferenceException is thrown, when the following steps are performed:
1. Scroll horizontally
2. Move a column by mouse drag and drop.
3. Start writing in the filter cell of the moved column
4. Suddenly the editor is closed.
5. When you try to write in the filter cell again, exception is thrown.
Work around:
void radGridView1_EditorRequired(object sender, Telerik.WinControls.UI.EditorRequiredEventArgs e)
{
    if (e.EditorType == typeof(RadTextBoxEditor))
    {
        e.Editor = new RadTextBoxEditor();
    }
}
			Improve localization of invalid parameter messages and Item text in Conditional Formatting Form of RadGridView.
RadProgressBarElement is not clipped correctly, when is used as child element of custom cell element in RadGridView.
Scrolling causes RadGridView to be in invalid mode, when the editor is closed and validating fails.
Clearing all rows does not clear the pinned rows collection in RadGridView.
DisableHTMLRendering property of the column does not effect the items in ColumnChooser.
Scroll bar calculations are wrong, when rows are hidden in CellClick event.
The editor does not remain focused when cell has invalid value and mouse down button is pressed over another cell.
Self-referencing hierarchy does not occur, if you bind the grid inside BeginUpdate-EndUpdate method invocation.
The active text box editor overlaps the bottom cell border, when RadGridView uses Windows 7 Theme.
The Active editor is not focused when the CellValidating event is canceled and navigation is performed.