Completed
Last Updated: 10 Oct 2016 08:24 by ADMIN
ADMIN
Created by: Dess | Tech Support Engineer, Principal
Comments: 6
Category: GridView
Type: Bug Report
2
Workaround: skip the summary rows by creating custom GridViewSearchRowInfo:  

private void radGridView1_CreateRowInfo(object sender, GridViewCreateRowInfoEventArgs e)
{
    if (e.RowInfo is GridViewSearchRowInfo)
    {
        e.RowInfo = new CustomGridViewSearchRowInfo(e.ViewInfo);
    }
}


public class CustomGridViewSearchRowInfo : GridViewSearchRowInfo
        {
            public CustomGridViewSearchRowInfo(GridViewInfo viewInfo) : base(viewInfo)
            {
            }

            protected override bool MatchesSearchCriteria(string searchCriteria, GridViewRowInfo row, GridViewColumn col)
            {
                if (row is GridViewSummaryRowInfo)
                {
                    return false;
                }
                return base.MatchesSearchCriteria(searchCriteria, row, col);
            }
        }
Completed
Last Updated: 05 May 2016 09:29 by ADMIN
ADMIN
Created by: Dimitar
Comments: 0
Category: GridView
Type: Bug Report
0
To reproduce:
radGridView1.GridNavigator.SelectFirstRow();
for (int i = 0; i < radGridView1.RowCount; i++)
{
    var result = radGridView1.GridNavigator.SelectNextRow(1);
}

Workaround:
- Move to the last row first:
radGridView1.GridNavigator.SelectLastRow();
Completed
Last Updated: 11 Apr 2016 06:59 by ADMIN
ADMIN
Created by: Dess | Tech Support Engineer, Principal
Comments: 0
Category: GridView
Type: Bug Report
1
I've attached a sample project.  Here are the steps to repeat this issue:
1. Run the application
2. Click column A and drag it to the right to reorder it, scrolling the window as it goes
3. You are eventually presented with a NullReferenceException
You may have to try this several times with different columns before the problem manifests.  I have found that moving just beyond the right edge of the main form and moving the mouse cursor up and down a little helps.  I appears this problem only occurs in grids with many columns, so that fast scrolling can occur for multiple seconds when reordering columns.

Workaround:

Sub New()
    InitializeComponent()

    Me.RadGridView1.GridViewElement.RegisterService(New MyRadGridViewDragDropService(Me.RadGridView1.GridViewElement))

End Sub

Public Class MyRadGridViewDragDropService
Inherits RadGridViewDragDropService
    Public Sub New(gridViewElement As RadGridViewElement)
        MyBase.New(gridViewElement)

    End Sub

    Public Overrides ReadOnly Property Name As String
        Get
            Return "RadGridViewDragDropService"
        End Get
    End Property
    Protected Overrides Sub PrepareDragHint(dropTarget As Telerik.WinControls.ISupportDrop)
        Dim dragDropBehavior As IGridDragDropBehavior = Me.GetDragDropBehavior()
        If dragDropBehavior Is Nothing OrElse dragDropBehavior.DragHint Is Nothing _
            OrElse dragDropBehavior.DragHint.Image Is Nothing Then
            Return
        End If

        Dim dropTargetItem As RadItem = TryCast(dropTarget, RadItem) 
        If dropTargetItem IsNot Nothing AndAlso dropTargetItem.ElementTree IsNot Nothing _
            AndAlso Not dropTargetItem.ElementTree.Control.Equals(Me.GridViewElement.ElementTree.Control) Then
            Return
        End If
         
        dragDropBehavior.UpdateDropContext(TryCast(Me.Context, ISupportDrag), dropTarget, Me.beginPoint)
        Dim hintSize As Size = dragDropBehavior.GetDragHintSize(dropTarget)
        Dim image As New Bitmap(hintSize.Width, hintSize.Height)
        Dim temp As Graphics = Graphics.FromImage(image)
        dragDropBehavior.DragHint.Paint(temp, New RectangleF(PointF.Empty, hintSize))
        temp.Dispose()

        Dim dragHintWindow As New RadLayeredWindow()
        GetType(RadGridViewDragDropService).GetField("dragHintWindow", _
         Reflection.BindingFlags.NonPublic Or Reflection.BindingFlags.Instance).SetValue(Me, dragHintWindow)
        dragHintWindow.BackgroundImage = image
    End Sub
End Class
Completed
Last Updated: 05 May 2016 12:29 by ADMIN
To reproduce: use the following code snippet. From the filtering box, when you select "Null" and then select "All", the following error occurs:
Item has already been added. Key in dictionary: '(Blanks)'  Key being added: '(Blanks)'

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

dt.Rows.Add(1,"A");
dt.Rows.Add(2, "");
dt.Rows.Add(3, null);
dt.Rows.Add(4, "B");
dt.Rows.Add(5, "C");
dt.Rows.Add(6, "");
this.radGridView1.DataSource = dt;
this.radGridView1.AutoSizeColumnsMode = Telerik.WinControls.UI.GridViewAutoSizeColumnsMode.Fill;
this.radGridView1.EnableFiltering = true;
this.radGridView1.ShowFilteringRow = false;
this.radGridView1.ShowHeaderCellButtons = true;

Workaround:  this.radGridView1.FilterPopupInitialized += radGridView1_FilterPopupInitialized;

RadListFilterDistinctValuesTable selectedValues;

private void radGridView1_FilterPopupInitialized(object sender, Telerik.WinControls.UI.FilterPopupInitializedEventArgs e)
{
    RadListFilterPopup popup = e.FilterPopup as RadListFilterPopup;
    selectedValues = popup.MenuTreeElement.SelectedValues;
    popup.MenuTreeElement.TreeView.NodeCheckedChanged += TreeView_NodeCheckedChanged;
}

private void TreeView_NodeCheckedChanged(object sender, TreeNodeCheckedEventArgs e)
{
    if (e.Node.CheckState == Telerik.WinControls.Enumerations.ToggleState.Off)
    {
        if (selectedValues.Contains(e.Node.Text))
        {
            selectedValues.Remove(e.Node.Text);
        }
    }
}
Completed
Last Updated: 11 Apr 2016 10:09 by ADMIN
To reproduce:
- Add an expression column with nullable type as a data source. 
- Open the property builder.

Workaround: 
Set the data type at run time. 
Completed
Last Updated: 07 Apr 2016 13:31 by Josh
To reproduce:
- Add some columns to the grid, make sure that most of the columns are not visible (the user must scroll to view them).
- Drag and drop the second column at the last position in the grid.
- The result can be seen on the attached image. 

Workaround:

Private Sub Columns_CollectionChanged(ByVal sender As Object, ByVal e As Telerik.WinControls.Data.NotifyCollectionChangedEventArgs)
      Me.RadGridView1.TableElement.ViewElement.UpdateRowsWhenColumnsChanged()
End Sub
Completed
Last Updated: 15 Apr 2016 10:26 by ADMIN
ADMIN
Created by: Dess | Tech Support Engineer, Principal
Comments: 0
Category: GridView
Type: Bug Report
0
To reproduce:

public Form1()
{
    InitializeComponent();
    BindingList<Item> items = new BindingList<Item>();
    
    for (int i = 0; i < 30; i++)
    {
        if (i % 3 == 0)
        {
            items.Add(new Item(i,"Item" + i, IndeterminateBoolean.YesAndNo));
        }
        else if (i % 3 == 1)
        {
            items.Add(new Item(i, "Item" + i, IndeterminateBoolean.Yes));
        }
        else
        {
            items.Add(new Item(i, "Item" + i, IndeterminateBoolean.No));
        }
    }
    this.radGridView1.DataSource = items;
    this.radGridView1.AutoSizeColumnsMode = GridViewAutoSizeColumnsMode.Fill;
    this.radGridView1.EnableFiltering = true; 
    this.radGridView1.ShowHeaderCellButtons = true;
    this.radGridView1.ShowFilteringRow = false; 
}

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

    public string Name { get; set; }

    public IndeterminateBoolean IsActive { get; set; }

    public Item(int id, string name, IndeterminateBoolean isActive)
    {
        this.Id = id;
        this.Name = name;
        this.IsActive = isActive;
    }
}

public enum IndeterminateBoolean
{
    No,
    Yes,
    YesAndNo
}

Workaround: use custom filtering http://docs.telerik.com/devtools/winforms/gridview/filtering/custom-filtering
Completed
Last Updated: 15 Apr 2016 12:07 by ADMIN
ADMIN
Created by: Dess | Tech Support Engineer, Principal
Comments: 0
Category: GridView
Type: Bug Report
0
To reproduce:

public Form1()
{
    InitializeComponent();
    BindingList<Item> items = new BindingList<Item>();
    
    for (int i = 0; i < 30; i++)
    {
        if (i % 3 == 0)
        {
            items.Add(new Item(i,"Item" + i, IndeterminateBoolean.YesAndNo));
        }
        else if (i % 3 == 1)
        {
            items.Add(new Item(i, "Item" + i, IndeterminateBoolean.Yes));
        }
        else
        {
            items.Add(new Item(i, "Item" + i, IndeterminateBoolean.No));
        }
    }
    this.radGridView1.DataSource = items;
    GridViewCheckBoxColumn checkBox = new GridViewCheckBoxColumn("CheckBoxCol");
    checkBox.DataTypeConverter = new IndeterminateBooleanToggleStateConverter();
    checkBox.FieldName = "IsActive";
    checkBox.ThreeState = true;
    this.radGridView1.Columns.Add(checkBox);
    this.radGridView1.AutoSizeColumnsMode = GridViewAutoSizeColumnsMode.Fill;
    this.radGridView1.EnableFiltering = true;

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

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

    public string Name { get; set; }

    public IndeterminateBoolean IsActive { get; set; }

    public Item(int id, string name, IndeterminateBoolean isActive)
    {
        this.Id = id;
        this.Name = name;
        this.IsActive = isActive;
    }
}

public enum IndeterminateBoolean
{
    No,
    Yes,
    YesAndNo
}

public class IndeterminateBooleanToggleStateConverter : TypeConverter
{
    public override bool CanConvertFrom(ITypeDescriptorContext context, Type sourceType)
    {
        return sourceType == typeof(ToggleState);
    }
    
    public override bool CanConvertTo(ITypeDescriptorContext context, Type destinationType)
    {
        return destinationType == typeof(ToggleState);
    }

    public override object ConvertFrom(ITypeDescriptorContext context, CultureInfo culture, object value)
    {
        if (value is ToggleState)
        {
            switch ((ToggleState)value)
            {
                case ToggleState.On:
                    return IndeterminateBoolean.Yes;
                case ToggleState.Off:
                    return IndeterminateBoolean.No;
                case ToggleState.Indeterminate:
                default:
                    return IndeterminateBoolean.YesAndNo;
            }
        }
        else
        {
            return base.ConvertFrom(context, culture, value);
        }
    }
    
    public override object ConvertTo(ITypeDescriptorContext context, CultureInfo culture, object value, Type destinationType)
    {
        if (destinationType == typeof(ToggleState))
        {
            if (value is IndeterminateBoolean)
            {
                switch ((IndeterminateBoolean)value)
                {
                    case IndeterminateBoolean.Yes:
                        return ToggleState.On;
                    case IndeterminateBoolean.No:
                        return ToggleState.Off;
                    case IndeterminateBoolean.YesAndNo:
                    default:
                        return ToggleState.Indeterminate;
                }
            }
            if (value is string)
            {
                switch (((string)value ?? string.Empty).Trim())
                {
                    case "Yes":
                        return ToggleState.On;
                    case "No":
                    case "":
                        return ToggleState.Off;
                    case "Both":
                    default:
                        return ToggleState.Indeterminate;
                }
            }
            else
            {
                return base.ConvertTo(context, culture, value, destinationType);
            }
        }
        else
        {
            return base.ConvertTo(context, culture, value, destinationType);
        }
    }
}

Workaround: use the custom filtering functionality: http://docs.telerik.com/devtools/winforms/gridview/filtering/custom-filtering

You can access the RadGridView.FilterDescriptors collection and according to the FilterDescriptor.Expression property to determine whether the row will be visible or not. 
Completed
Last Updated: 09 Nov 2016 07:59 by ADMIN
To reproduce:
- Create load on demand hierarchy.
- Open the excel filter popup.
- The RowSourceNeeded event fires for  all rows.

Workaround:
public class MyGridHeaderCellElement : GridHeaderCellElement
{
  
    public MyGridHeaderCellElement(GridViewDataColumn col, GridRowElement row) : base(col, row)
    {
    }
  
    protected override Type ThemeEffectiveType
    {
        get { return typeof(GridHeaderCellElement); }
    }
  
    protected override IGridFilterPopup CreateFilterPopup()
    {
        this.GridControl.Tag = "FileterInitializing";
        return base.CreateFilterPopup();
    }
}
// in the main forms you cab skip the event code execution while the popup is initialized
private void RadGridView1_FilterPopupInitialized(object sender, FilterPopupInitializedEventArgs e)
{
    this.radGridView1.Tag = null;
}
  
private void RadGridView1_CreateCell(object sender, GridViewCreateCellEventArgs e)
{
  
    if (object.ReferenceEquals(e.CellType, typeof(GridHeaderCellElement)))
    {
        e.CellType = typeof(MyGridHeaderCellElement);
    }
}
void radGridView1_RowSourceNeeded(object sender, GridViewRowSourceNeededEventArgs e)
{
    if (radGridView1.Tag != null && radGridView1.Tag == "FileterInitializing")
    {
        return;
    }
    //other code
}
Completed
Last Updated: 28 Nov 2016 16:01 by ADMIN
The behavior should be consistent no matter if you change the current column or the current row.
Completed
Last Updated: 15 Apr 2016 06:09 by ADMIN
To reproduce:
Add the following view:
for (int i = 0; i < 8; i++)
{
    radGridView2.Columns.Add("Col" + (i+1));
}

ColumnGroupsViewDefinition view = new ColumnGroupsViewDefinition();
view.ColumnGroups.Add(new GridViewColumnGroup("G1"));
view.ColumnGroups.Add(new GridViewColumnGroup("G2"));
view.ColumnGroups.Add(new GridViewColumnGroup("G3"));

view.ColumnGroups[0].Rows.Add(new GridViewColumnGroupRow());
view.ColumnGroups[0].Rows[0].ColumnNames.Add("Col1");
view.ColumnGroups[0].Rows[0].ColumnNames.Add("Col2");
view.ColumnGroups[0].Rows[0].ColumnNames.Add("Col3");

view.ColumnGroups[1].Rows.Add(new GridViewColumnGroupRow());
view.ColumnGroups[1].Rows[0].ColumnNames.Add("Col4");
view.ColumnGroups[1].Rows[0].ColumnNames.Add("Col5");

view.ColumnGroups[2].Rows.Add(new GridViewColumnGroupRow());
view.ColumnGroups[2].Rows[0].ColumnNames.Add("Col6");
view.ColumnGroups[2].Rows[0].ColumnNames.Add("Col7");
view.ColumnGroups[2].Rows[0].ColumnNames.Add("Col8");

radGridView2.ViewDefinition = view;

for (int i = 0; i < 10; i++)
{
    radGridView2.Rows.Add("row"+i, "test","test","test","test","test","test");
}


radGridView2.Columns[2].IsVisible = false;
radGridView2.Columns[7].IsVisible = false;

- Then export the grid with the spread exporter.

Completed
Last Updated: 06 May 2016 14:04 by ADMIN
To reproduce: use the following code snippet. You will notice that the "Accounting Manager" group is missing.

private void Form1_Load(object sender, EventArgs e)
{ 
    this.customersTableAdapter.Fill(this.nwindDataSet.Customers);

    this.radGridView1.DataSource = this.customersBindingSource;

    ColumnGroupsViewDefinition view = new ColumnGroupsViewDefinition();
    view.ColumnGroups.Add(new GridViewColumnGroup("Customer Contact"));
    view.ColumnGroups.Add(new GridViewColumnGroup("Details"));
    view.ColumnGroups[1].Groups.Add(new GridViewColumnGroup("Address"));
    view.ColumnGroups[1].Groups.Add(new GridViewColumnGroup("Contact"));
    view.ColumnGroups[0].Rows.Add(new GridViewColumnGroupRow());
    view.ColumnGroups[0].Rows[0].ColumnNames.Add("CompanyName");
    view.ColumnGroups[0].Rows[0].ColumnNames.Add("ContactName");
    view.ColumnGroups[0].Rows[0].ColumnNames.Add("ContactTitle");
    view.ColumnGroups[1].Groups[0].Rows.Add(new GridViewColumnGroupRow());
    view.ColumnGroups[1].Groups[0].Rows[0].ColumnNames.Add("Address");
    view.ColumnGroups[1].Groups[0].Rows[0].ColumnNames.Add("City");
    view.ColumnGroups[1].Groups[0].Rows[0].ColumnNames.Add("Country");
    view.ColumnGroups[1].Groups[1].Rows.Add(new GridViewColumnGroupRow());
    view.ColumnGroups[1].Groups[1].Rows[0].ColumnNames.Add("Phone");
    view.ColumnGroups[1].Groups[1].Rows[0].ColumnNames.Add("Fax");
    radGridView1.ViewDefinition = view;

    GroupDescriptor descriptor = new GroupDescriptor();
    descriptor.GroupNames.Add("ContactTitle", ListSortDirection.Ascending);
    this.radGridView1.GroupDescriptors.Add(descriptor);

    this.radGridView1.Groups[0].GroupRow.IsPinned = true;
}
Completed
Last Updated: 09 Aug 2024 09:22 by ADMIN
Release 2024.3.806 (2024 Q3)
Created by: Jason
Comments: 6
Category: GridView
Type: Feature Request
11
Enable the ability to MERGE seperate rows (different records), like found in ITunes "Songs" mode where is shows the artwork (then artist,release undernearth) in a custom class, then the related song rows to the right.

Your competitor Dev Express has it already in place.

See youtube video here :

https://www.youtube.com/watch?v=TfPXwE7GcXs

Cheers
Completed
Last Updated: 20 Oct 2016 15:46 by ADMIN
To reproduce:
public Form1()
{
    InitializeComponent();
    
    radGridView1.Columns.Add(new GridViewTextBoxColumn("Text1"));
    radGridView1.Columns.Add(new GridViewTextBoxColumn("Text2"));
    radGridView1.Columns.Add(new GridViewTextBoxColumn("Text3"));
    radGridView1.Columns.Add(new GridViewTextBoxColumn("Text4"));
    radGridView1.Columns.Add(new GridViewTextBoxColumn("Text5"));
    radGridView1.Columns.Add(new GridViewTextBoxColumn("Text6"));
    radGridView1.Columns.Add(new GridViewTextBoxColumn("Text7"));
    radGridView1.Columns.Add(new GridViewTextBoxColumn("Text8"));
    radGridView1.Columns.Add(new GridViewDateTimeColumn("Date1"));
    radGridView1.Columns.Add(new GridViewDecimalColumn("Amount1"));
    radGridView1.Columns.Add(new GridViewDecimalColumn("Amount2"));
    radGridView1.Columns.Add(new GridViewDecimalColumn("Amount3"));
    radGridView1.Columns.Add(new GridViewDecimalColumn("Amount4"));
    radGridView1.Columns.Add(new GridViewDecimalColumn("Amount5"));
    radGridView1.Columns.Add(new GridViewDecimalColumn("Amount6"));
    radGridView1.DataSource = GetDataSet();
}

private DataTable GetDataSet()
{
    DataTable dt = new DataTable();
    dt.Columns.Add(new DataColumn("Text1", typeof(string)));
    dt.Columns.Add(new DataColumn("Text2", typeof(string)));
    dt.Columns.Add(new DataColumn("Text3", typeof(string)));
    dt.Columns.Add(new DataColumn("Text4", typeof(string)));
    dt.Columns.Add(new DataColumn("Text5", typeof(string)));
    dt.Columns.Add(new DataColumn("Text6", typeof(string)));
    dt.Columns.Add(new DataColumn("Text7", typeof(string)));
    dt.Columns.Add(new DataColumn("Text8", typeof(string)));
    dt.Columns.Add(new DataColumn("Date1", typeof(DateTime)));
    dt.Columns.Add(new DataColumn("Amount1", typeof(decimal)));
    dt.Columns.Add(new DataColumn("Amount2", typeof(decimal)));
    dt.Columns.Add(new DataColumn("Amount3", typeof(decimal)));
    dt.Columns.Add(new DataColumn("Amount4", typeof(decimal)));
    dt.Columns.Add(new DataColumn("Amount5", typeof(decimal)));
    dt.Columns.Add(new DataColumn("Amount6", typeof(decimal)));

    for (int i = 1; i <= 150000; i++)
    {
        dt.Rows.Add(new object[]
        {
            "Example Text For Row " + i.ToString(),
            "Example Text For Row " + i.ToString(),
            "More Example Text For Row " + i.ToString(),
            "Even More Example Text For Row " + i.ToString(),
            "Lots More Example Text For Row " + i.ToString(),
            "Excessive Example Text For Row " + i.ToString(),
            "Extra Example Text For Row " + i.ToString(),
            "Random Example Text For Row " + i.ToString(),
            new DateTime(2015, i % 12 + 1, i % 28 + 1),
            i % 2 * 10000, i % 3 * 10000, i % 5 * 10000, i % 7 * 10000, i % 11 * 10000, i % 13 * 10000
        });
    }

    return dt;
}

string fileName = @"..\..\" + DateTime.Now.ToLongTimeString().Replace(":", "_");

private void button1_Click(object sender, EventArgs e)
{
    SaveFileDialog sfdExportToExcel = new SaveFileDialog();
    DialogResult exportBrowse = sfdExportToExcel.ShowDialog();

    if (exportBrowse == DialogResult.OK)
    {
        GridViewSpreadExport exporter = new GridViewSpreadExport(this.radGridView1);
        exporter.SheetMaxRows = Telerik.WinControls.UI.Export.ExcelMaxRows._1048576;
        exporter.FileExportMode = FileExportMode.CreateOrOverrideFile;
        exporter.ExportVisualSettings = false;
        exporter.AsyncExportCompleted += exporter_AsyncExportCompleted;
        SpreadExportRenderer renderer = new SpreadExportRenderer();
        
        exporter.RunExportAsync(fileName, renderer);
    }
}

Unplanned
Last Updated: 15 Aug 2017 10:08 by ADMIN
The selection mode should be as in Windows Explorer - when Control is pressed, one should be able to move the current row with the up/down arrow keys and when Space is pressed, the current row should be selected/deselected. 

This implementation can be used for the time being:
  public partial class Form1 : RadForm
    {
        protected override void OnLoad(EventArgs e)
        {
            base.OnLoad(e);

            AddGridSimpleUnbound();
            radGridView1.MultiSelect = true;

            BaseGridBehavior gridBehavior = radGridView1.GridBehavior as BaseGridBehavior;
            gridBehavior.UnregisterBehavior(typeof(GridViewDataRowInfo));
            gridBehavior.RegisterBehavior(typeof(GridViewDataRowInfo), new MyRowBehavior());

            radGridView1.GridViewElement.Navigator = new MyNavigator();
        }

        class MyNavigator : BaseGridNavigator
        {
            protected override bool DoMultiSelect(GridViewRowInfo oldRow, GridViewColumn oldColumn, GridViewRowInfo row, GridViewColumn column)
            {
                if (!this.IsShiftButtonPressed && this.IsControlButtonPressed && !this.IsMouseSelection)
                {
                    return true;
                }

                return base.DoMultiSelect(oldRow, oldColumn, row, column);
            }
        }

        class MyRowBehavior : GridDataRowBehavior
        {
            bool kbdSelection = false;
            public override bool ProcessKeyPress(KeyPressEventArgs keys)
            {
                if (kbdSelection)
                {
                    kbdSelection = false;
                    return true;
                }
                return base.ProcessKeyPress(keys);
            }
            public override bool ProcessKey(KeyEventArgs keys)
            {
                if (keys.KeyCode == Keys.Space && this.GridControl.MultiSelect && keys.Control)
                {
                    this.GridControl.CurrentRow.IsSelected ^= true;
                    kbdSelection = true;
                    return false;
                }
                else
                {
                    return base.ProcessKey(keys);
                }
            }
        }
}
Completed
Last Updated: 14 Mar 2016 07:44 by ADMIN
To reproduce: 

public Form1()
{
    InitializeComponent();

    for (int i = 0; i < 10; i++)
    {
        this.radGridView1.Columns.Add("Col"+i);
    }
    this.radGridView1.TableElement.RowDragHint = null;
}

Workaround:
public Form1()
{
    InitializeComponent();

    for (int i = 0; i < 10; i++)
    {
        this.radGridView1.Columns.Add("Col"+i);
    }
    this.radGridView1.TableElement.RowDragHint = null;

    CustomRadGridViewDragDropService service = new CustomRadGridViewDragDropService(this.radGridView1.GridViewElement);
    this.radGridView1.GridViewElement.RegisterService(service);
    
}
public class CustomRadGridViewDragDropService : RadGridViewDragDropService
{
    public CustomRadGridViewDragDropService(RadGridViewElement gridViewElement) : base(gridViewElement)
    {
    }
    public override string Name
    {
        get
        {
            return typeof(RadGridViewDragDropService).Name;
        }
    }

    protected override void PrepareDragHint(ISupportDrop dropTarget)
    {
        if (this.GridViewElement.TableElement.RowDragHint == null)
        {
            return;
        }
        base.PrepareDragHint(dropTarget);
    }
    protected override IGridDragDropBehavior GetDragDropBehavior()
    {
        IGridDragDropBehavior behavior = null;
        ISupportDrop dropTarget = this.DropTarget;
        if (dropTarget is GridHeaderCellElement)
        {
            behavior = new CustomGridColumnDragDropBehvavior();
            return behavior;
        }
        return base.GetDragDropBehavior();
    }
}

public class CustomGridColumnDragDropBehvavior : GridColumnDragDropBehvavior
{
    public override Size GetDragHintSize(ISupportDrop dropTarget)
    {
        if (this.DragHint==null)
        {
            return new Size(0, 0);
        }
        return base.GetDragHintSize(dropTarget);
    }
}
Completed
Last Updated: 16 Mar 2016 13:22 by ADMIN
To reproduce:

 Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
     Me.RadGridView1.DataSource = Me.ProductsBindingSource
     Me.ProductsTableAdapter.Fill(Me.NwindDataSet.Products)

     Dim obj As New ConditionalFormattingObject("MyCondition", ConditionTypes.Greater, "30", "", False)
     obj.CellBackColor = Color.SkyBlue
     obj.CellForeColor = Color.Red
     obj.TextAlignment = ContentAlignment.MiddleRight
     Me.RadGridView1.Columns("UnitPrice").ConditionalFormattingObjectList.Add(obj)
 End Sub

 Private Sub RadButton1_Click(sender As Object, e As EventArgs) Handles RadButton1.Click
     Dim mySQL As String = "SELECT * FROM Products where ProductName = 'Chaii'"
     Dim myTable As DataTable = getDataInTable(mySQL, My.Settings.NwindConnectionString)
     Me.RadGridView1.DataSource = myTable
 End Sub
 Public Shared Function getDataInTable(mySQLorTable As String, myConnectionString As String, Optional myTimeout As Integer = 30) As DataTable
    
     Using myConnection As New System.Data.OleDb.OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=|DataDirectory|\Nwind.mdb")
         Dim myCommand As New OleDb.OleDbCommand(mySQLorTable, myConnection)
         myConnection.Open()
         Dim myDataTable As New DataTable
         Dim myAdapter As New OleDb.OleDbDataAdapter(myCommand)
         myAdapter.Fill(myDataTable)
         Return myDataTable
     End Using
 End Function


When you click the button, the grid is refilled with the query result which does not contain any rows. As a result, a DataException is thrown for each column: "There is no property descriptor corresponding to property name: 'ColumnName'" .  

Workaround: clear the conditional formatting objects, reset the DataSource and add the conditional formatting objects back
Completed
Last Updated: 14 Mar 2016 08:19 by ADMIN
ADMIN
Created by: Dess | Tech Support Engineer, Principal
Comments: 0
Category: GridView
Type: Bug Report
0
To reproduce:
public Form1()
{
    InitializeComponent();

    BindingList<Item> items = new BindingList<Item>();
    for (int i = 0; i < 10; i++)
    {
        items.Add(new Item(i,"Item" + i , DeliveryType.Type1));
    }
    for (int i = 10; i < 20; i++)
    {
        items.Add(new Item(i, "Item" + i, DeliveryType.Type2));
    }
    for (int i = 20; i < 30; i++)
    {
        items.Add(new Item(i, "Item" + i, DeliveryType.Type3));
    }
    this.radGridView1.DataSource = items;
    this.radGridView1.AutoSizeColumnsMode = Telerik.WinControls.UI.GridViewAutoSizeColumnsMode.Fill; 
    
    this.radGridView1.EnableFiltering = true;
    CompositeFilterDescriptor compositeFilter = new CompositeFilterDescriptor();
    compositeFilter.FilterDescriptors.Add(new FilterDescriptor("DeliveryType", FilterOperator.IsEqualTo, DeliveryType.Type2));
    compositeFilter.FilterDescriptors.Add(new FilterDescriptor("DeliveryType", FilterOperator.IsEqualTo, DeliveryType.Type3));
    compositeFilter.LogicalOperator = FilterLogicalOperator.Or;
  
    this.radGridView1.FilterDescriptors.Add(compositeFilter);
}

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

    public string Name { get; set; }

    public DeliveryType DeliveryType { get; set; }

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

public enum DeliveryType
{ 
    Type1,
    Type2,
    Type3
}

Workaround: use custom filtering: http://docs.telerik.com/devtools/winforms/gridview/filtering/custom-filtering
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; } 
        }
Completed
Last Updated: 25 Apr 2016 13:01 by ADMIN
Workaround: suspend columns notifications when preview dropping and resume the notification after the drag drop service has stopped:

Dim svc As RadDragDropService = Me.RadGridView1.GridViewElement.GetService(Of RadDragDropService)()
AddHandler svc.Stopped, svc_Stopped
AddHandler svc.PreviewDragDrop, AddressOf svc_PreviewDragDrop

Private Sub svc_PreviewDragDrop(sender As Object, e As RadDropEventArgs)
    For Each col As GridViewColumn In Me.RadGridView1.Columns
        col.SuspendPropertyNotifications()
    Next
End Sub

Private Function svc_Stopped() As Object
    For Each col As GridViewColumn In Me.RadGridView1.Columns
        col.ResumePropertyNotifications()
    Next
End Function