Completed
Last Updated: 24 Nov 2016 09:26 by ADMIN
To reproduce:
- Add one-to-many relations hierarchy 3 or more child templates.
- Export the grid using GridViewSpreadExport
- The child rows of the last parent row are missing.

Workaround:
Add an empty parent row at the end of the grid. 


Completed
Last Updated: 01 Feb 2017 14:41 by ADMIN
To reproduce:
- Bind the grid to an object that contains enum property.
- Save the layout
- Restart the application and load the layout before setting the DataSource of the grid. 

Workaround:
Load the layout after the DataSource is set. 
Completed
Last Updated: 30 Jan 2017 07:48 by ADMIN
Description: if you filter a text column with "Does not contains" operator, the produced FilterDescriptors.Expression is "ProductName NOT LIKE '%c%' OR ProductName IS NULL". However, if you try to programmatically add this expression to the RadGridView.FilterDescriptors.Expression property it doesn't filter the grid.

 Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load 
     Me.ProductsTableAdapter.Fill(Me.NwindDataSet.Products)
     Me.RadGridView1.EnableFiltering = True 
 End Sub
 
 Private Sub RadButton1_Click(sender As Object, e As EventArgs) Handles RadButton1.Click
     Me.RadGridView1.FilterDescriptors.Expression = "ProductName NOT LIKE '%c%' OR ProductName IS NULL"
 End Sub

Workaround: don't set expression but add a FilterDescriptor: http://docs.telerik.com/devtools/winforms/gridview/filtering/setting-filters-programmatically-(simple-descriptors)


     Dim filter1 As New FilterDescriptor()
     filter1.[Operator] = FilterOperator.NotContains
     filter1.Value = "c"
     filter1.IsFilterEditor = True
     filter1.PropertyName = "ProductName"
     Me.RadGridView1.FilterDescriptors.Add(filter1)
Completed
Last Updated: 28 Nov 2016 16:01 by ADMIN
To reproduce: populate a grid and enable multiple selection. Use cell selection. When you click the row header, the entire row (all cells from the row) is selected no matter the SelectionMode. However, if you start a selection from the row header and move the cursor, only the cells from the first column get selected. The attached gif file illustrates the behavior.  The expected behavior is that all cells from the affected columns should be selected when starting the selection from the row header.

Workaround:

Sub New()
    InitializeComponent()
    Me.RadGridView1.MultiSelect = True
    Me.RadGridView1.SelectionMode = Telerik.WinControls.UI.GridViewSelectionMode.CellSelect

    AddHandler Me.RadGridView1.MouseDown, AddressOf GridMouseDown
    AddHandler Me.RadGridView1.MouseUp, AddressOf GridMouseUp
    AddHandler Me.RadGridView1.MouseMove, AddressOf GridMouseMove
End Sub

Dim isMouseDown = False
Dim startRow As GridViewRowInfo
Dim lastHoveredCell As GridCellElement
Private Sub GridMouseDown(sender As Object, e As MouseEventArgs)
    Dim cell As GridRowHeaderCellElement = TryCast(Me.RadGridView1.ElementTree.GetElementAtPoint(e.Location), GridRowHeaderCellElement)
    If cell IsNot Nothing Then
        isMouseDown = True
        startRow = cell.RowInfo
    End If
End Sub

Private Sub GridMouseUp(sender As Object, e As MouseEventArgs)
    isMouseDown = False
    startRow = Nothing
End Sub

Private Sub GridMouseMove(sender As Object, e As MouseEventArgs)
    If isMouseDown Then 
        Dim cellUnderMouse As GridCellElement = TryCast(Me.RadGridView1.ElementTree.GetElementAtPoint(e.Location), GridCellElement)
        If cellUnderMouse IsNot Nothing AndAlso Not cellUnderMouse.Equals(lastHoveredCell) Then
            lastHoveredCell = cellUnderMouse
            Me.RadGridView1.ClearSelection()
            Me.RadGridView1.SelectedCells.BeginUpdate()
            If startRow.Index > cellUnderMouse.RowInfo.Index Then
                For index = cellUnderMouse.RowInfo.Index To startRow.Index
                    Me.RadGridView1.Rows(index).IsSelected = True
                Next
            Else
                For index = startRow.Index To cellUnderMouse.RowInfo.Index
                    For Each cell As GridViewCellInfo In Me.RadGridView1.Rows(index).Cells
                        cell.IsSelected = True
                    Next
                Next
            End If
            Me.RadGridView1.SelectedCells.EndUpdate(True)
        End If
    End If
End Sub
Completed
Last Updated: 13 Jan 2017 10:58 by ADMIN
To reproduce: populate the grid with data and use the following code snippet:

Me.RadGridView1.EnableAlternatingRowColor = True
Me.RadGridView1.TableElement.AlternatingRowColor = Color.LightGray
Me.RadGridView1.MultiSelect = True
Me.RadGridView1.SelectionMode = Telerik.WinControls.UI.GridViewSelectionMode.CellSelect

Select multiple cells from different rows. You will notice that alternating color is not applied to the rows for which you have a selected cell. The attached gif file illustrates the behavior. 

Workaround:

Sub New() 
    InitializeComponent()
    Me.RadGridView1.MultiSelect = True
    Me.RadGridView1.SelectionMode = Telerik.WinControls.UI.GridViewSelectionMode.CellSelect
End Sub
Private Sub RadGridView1_CellFormatting(sender As Object, e As Telerik.WinControls.UI.CellFormattingEventArgs) _
Handles RadGridView1.CellFormatting
    e.CellElement.DrawFill = True
    e.CellElement.GradientStyle = Telerik.WinControls.GradientStyles.Solid
    If e.CellElement.IsSelected Then
        e.CellElement.ResetValue(LightVisualElement.BackColorProperty, ValueResetFlags.Local)
    ElseIf e.CellElement.RowInfo.Index Mod 2 = 0 Then
        e.CellElement.BackColor = Color.White
    Else
        e.CellElement.BackColor = Color.LightGray
    End If 
End Sub
Completed
Last Updated: 25 Nov 2016 08:50 by ADMIN
Please refer to the attached gif file illustrating how to reproduce the error with the Demo application.

Workaround: this.radGridView1.UseScrollbarsInHierarchy = true;
Completed
Last Updated: 24 Nov 2016 06:27 by ADMIN
To reproduce:

Sub New()

    InitializeComponent()

    Dim dt As New DataTable()
    dt.Columns.Add("Price", GetType(System.Double))
    dt.Columns.Add("Name", GetType(System.String))
    dt.Columns.Add("Nr", GetType(System.Double))
    For i As Integer = 0 To 49
        dt.Rows.Add(i, "Data" & i, i)
    Next
    With Me.RadGridView1
        .DataSource = dt
        .Columns("Price").FormatString = "{0:C2}"
        .Columns("Nr").FormatString = "{0:N1}"
        .Columns("Price").ExcelExportType = Export.DisplayFormatType.Currency
        '
        .AutoSizeColumnsMode = Telerik.WinControls.UI.GridViewAutoSizeColumnsMode.Fill
    End With
    Me.RadGridView1.Columns("Price").ExcelExportType = Export.DisplayFormatType.Currency

    Me.RadGridView1.Columns("Nr").ExcelExportType = Export.DisplayFormatType.Custom
    Me.RadGridView1.Columns("Nr").ExcelExportFormatString = "{0:N1}"

    Me.RadGridView1.AutoSizeColumnsMode = Telerik.WinControls.UI.GridViewAutoSizeColumnsMode.Fill

End Sub

Private Sub RadButton1_Click(sender As Object, e As EventArgs) Handles RadButton1.Click
    Dim spreadStreamExport As New GridViewSpreadStreamExport(Me.RadGridView1)
    spreadStreamExport.ExportVisualSettings = True
    Dim fileName As String = "..\..\" + DateTime.Now.ToLongTimeString().Replace(":", "_").ToString() + ".xlsx"
  
    spreadStreamExport.RunExport(fileName, New SpreadStreamExportRenderer())
    Process.Start(fileName)
End Sub

Workaround:
Me.RadGridView1.Columns("Nr").ExcelExportType = Export.DisplayFormatType.Fixed

AddHandler spreadStreamExport.CellFormatting, AddressOf CellFormatting
Private Sub CellFormatting(sender As Object, e As SpreadStreamCellFormattingEventArgs)
        If e.ExportCell.ColumnIndex = 2 Then
            e.ExportCell.ExportFormat = "0.0"
        End If
    End Sub
Completed
Last Updated: 07 Nov 2016 11:49 by ADMIN
Workaround: custom CompositeFilterForm 
private void radGridView1_CreateCompositeFilterDialog(object sender, GridViewCreateCompositeFilterDialogEventArgs e)
{
    e.Dialog = new MyCompositeFilterForm();
}

public class MyCompositeFilterForm : CompositeFilterForm
{
    public override void Initialize(GridViewDataColumn dataColumn, Telerik.WinControls.Data.FilterDescriptor filterDescriptor, bool useTypedEditors)
    {
        base.Initialize(dataColumn, filterDescriptor, useTypedEditors);

        if (dataColumn.Name == "Time")
        {
            RadDateTimePicker rEditor = (RadDateTimePicker)this.RightEditor;
            rEditor.DateTimePickerElement.ShowTimePicker = true;
            rEditor.DateTimePickerElement.CalendarSize = new Size(500, 250);

            RadDateTimePicker lEditor = (RadDateTimePicker)this.LeftEditor;
            lEditor.DateTimePickerElement.ShowTimePicker = true;
            lEditor.DateTimePickerElement.CalendarSize = new Size(500, 250);
        }
    }

protected override void OnClosing(System.ComponentModel.CancelEventArgs e)
{
    base.OnClosing(e);

    if (this.DialogResult == DialogResult.OK)
    {
        object leftValue = this.GetValueFromDateEditor(this.LeftEditor);
        if (leftValue != null)
        {
            this.LeftDescriptor.Value = leftValue;
        }

        object rightValue = this.GetValueFromDateEditor(this.RightEditor);
        if (rightValue != null)
        {
            this.RightDescriptor.Value = rightValue;
        }
    }
}


    protected virtual object GetValueFromDateEditor(RadControl editorControl)
    {
        object value = null;
        if (editorControl is RadDateTimePicker)
        {
            value = ((RadDateTimePicker)editorControl).Value;
            return value;
        }

        return value;
    }
}

Completed
Last Updated: 24 Nov 2016 12:32 by ADMIN
To reproduce:

public RadForm1()
{
    InitializeComponent();

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

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

    this.radGridView1.AutoSizeRows = false;
}

private void RadForm1_Load(object sender, EventArgs e)
{
    this.radGridView1.Rows[5].MinHeight = 80;
    this.radGridView1.Rows[5].MaxHeight = 100;
}

The Min/MaxHeight is not respected even when resizing the row.

Workaround: set the Height property.
Completed
Last Updated: 28 Nov 2016 07:03 by ADMIN
Please refer to the attached sample project which result is illustrated in the provided screenshot.

Workaround:
this.radGridView1.ClearSelection();
this.radGridView1.CurrentRow = null; 
this.radGridView1.Rows[1].Cells[2].IsSelected = true;
Completed
Last Updated: 24 Nov 2016 11:34 by ADMIN
Use attached project to reproduce. The video shows what steps you need to take. 

Workaround:
Use CellEndEdit instead. 
Completed
Last Updated: 24 Nov 2016 11:33 by ADMIN
Use the attached project to reproduce. The video shows what steps you need to take. 

Completed
Last Updated: 09 Nov 2016 13:51 by ADMIN
ADMIN
Created by: Dess | Tech Support Engineer, Principal
Comments: 0
Category: GridView
Type: Bug Report
1
To reproduce:

Sub New()

    InitializeComponent()

    Dim dt As New DataTable
    dt.Columns.Add("Id", GetType(Integer))
    dt.Columns.Add("Name", GetType(String))

    For index = 1 To 200000
        dt.Rows.Add(index, "Item" & index)
    Next
    Me.RadGridView1.DataSource = dt

    Me.RadGridView1.MultiSelect = True
    Me.RadGridView1.SelectionMode = Telerik.WinControls.UI.GridViewSelectionMode.CellSelect
End Sub

Private Sub RadButton1_Click(sender As Object, e As EventArgs) Handles RadButton1.Click
    Dim sw As New Stopwatch
    sw.Start()

    Dim mi As MethodInfo = GetType(GridViewSelectedCellsCollection).GetMethod("BeginUpdate", BindingFlags.Instance Or BindingFlags.NonPublic)
    mi.Invoke(Me.RadGridView1.MasterTemplate.SelectedCells, Nothing)
    For Each row As GridViewDataRowInfo In Me.RadGridView1.Rows
        row.Cells("Name").IsSelected = True
    Next
    
    Dim mi2 As MethodInfo = GetType(GridViewSelectedCellsCollection).GetMethod("EndUpdate", BindingFlags.Instance Or BindingFlags.NonPublic)
    mi2.Invoke(Me.RadGridView1.MasterTemplate.SelectedCells, New Object() {True})

    sw.Stop()
    RadMessageBox.Show(sw.ElapsedMilliseconds)
End Sub
Completed
Last Updated: 18 Oct 2016 10:19 by ADMIN
To reproduce:
DataTable table;
public RadForm1()
{
    InitializeComponent();
    table = GetTable();
    radGridView1.DataSource = table;

}

private void radButton1_Click(object sender, EventArgs e)
{
    var changes = table.GetChanges();

    if (changes == null)
    {
        Console.WriteLine("No Changes");
    }
    else
    {
        Console.WriteLine("Saved");

        foreach (DataRow item in changes.Rows) 
        {
            Console.WriteLine(item.RowState.ToString());
        }
    }

    table.AcceptChanges();
}
static DataTable GetTable()
{

    DataTable table = new DataTable();
    table.Columns.Add("Dosage", typeof(int));
    table.Columns.Add("Drug", typeof(string));
    table.Columns.Add("Name", typeof(string));
    table.Columns.Add("Date", typeof(DateTime));


    table.Rows.Add(25, "Indocin", "David", DateTime.Now);
    table.Rows.Add(50, "Enebrel", "Sam", DateTime.Now);
    table.Rows.Add(10, "Hydralazine", "Christoff", DateTime.Now);
    table.Rows.Add(21, "Combivent", "Janet", DateTime.Now);
    table.Rows.Add(100, "Dilantin", "Melanie", DateTime.Now);
    table.AcceptChanges();

    return table;
}

Workaround:
(this.radGridView1.CurrentRow.DataBoundItem as IEditableObject).EndEdit();
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: 04 Jan 2017 15:58 by ADMIN
ADMIN
Created by: Dess | Tech Support Engineer, Principal
Comments: 0
Category: GridView
Type: Bug Report
0
To reproduce:

public Form1()
{
    InitializeComponent();
    for (int i = 0; i < 10; i++)
    {
        this.radGridView1.Columns.Add("column " + i);
    }

    int charsCount = 5;
    for (int i = 0; i < 20; i++)
    {
        this.radGridView1.Rows.Add(new string('0', charsCount), new string('1', charsCount), 
            new string('2', charsCount), new string('3', charsCount), new string('4', charsCount),
            new string('5', charsCount), new string('6', charsCount), new string('7', charsCount), 
            new string('8', charsCount), new string('9', charsCount));
    }
    HtmlViewDefinition view = new HtmlViewDefinition();
    view.RowTemplate.Rows.Add(new RowDefinition());
    view.RowTemplate.Rows.Add(new RowDefinition());
    view.RowTemplate.Rows.Add(new RowDefinition());
    view.RowTemplate.Rows[0].Cells.Add(new CellDefinition("Column 0", 0, 1, 1));
    view.RowTemplate.Rows[0].Cells.Add(new CellDefinition("Column 1", 0, 1, 3));
    view.RowTemplate.Rows[0].Cells.Add(new CellDefinition("Column 2", 0, 1, 1));
    view.RowTemplate.Rows[0].Cells.Add(new CellDefinition("Column 3", 0, 1, 1));
    view.RowTemplate.Rows[0].Cells.Add(new CellDefinition("Column 7", 0, 1, 1));
    view.RowTemplate.Rows[1].Cells.Add(new CellDefinition("Column 4", 0, 1, 2));
    view.RowTemplate.Rows[1].Cells.Add(new CellDefinition("Column 5", 0, 2, 1));
    view.RowTemplate.Rows[1].Cells.Add(new CellDefinition("Column 8", 0, 1, 1));
    view.RowTemplate.Rows[2].Cells.Add(new CellDefinition("Column 6", 0, 2, 1));
    view.RowTemplate.Rows[2].Cells.Add(new CellDefinition("Column 9", 0, 1, 1));

    this.radGridView1.AutoSizeColumnsMode = GridViewAutoSizeColumnsMode.Fill;

    this.radGridView1.ViewDefinition = view;
}

Workaround:
private void radGridView1_SizeChanged(object sender, EventArgs e)
{
    this.radGridView1.MasterTemplate.Refresh();
}

Completed
Last Updated: 24 Oct 2016 08:55 by ADMIN
The issue can be reproduced with the .40 version of the assemblies and in a scenario in which the grid is added as a RadMenuHostItem to the Items collection of a drop-down button.

Workaround:  set the BindingContext of the grid to equal that of the form: 
public Form1()
{
            InitializeComponent();

            radGridView1.BindingContext = this.BindingContext;
}
Completed
Last Updated: 21 Nov 2016 08:54 by ADMIN
To reproduce:

1. Use the following code:
public Form1()
{
    InitializeComponent();

    this.radGridView1.EnableFiltering = true;

    GridViewDecimalColumn col = new GridViewDecimalColumn();
    col.Name = "Calculated Column";
    col.HeaderText = "Order value";
    radGridView1.Columns.Add(col);
    radGridView1.Columns["Calculated Column"].Expression = "Freight/Sum(Freight)";
}

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

    this.radGridView1.DataSource = this.ordersBindingSource;
    this.radGridView1.AutoSizeColumnsMode = GridViewAutoSizeColumnsMode.Fill;
    
    GridViewSummaryItem summaryItem = new GridViewSummaryItem();
    summaryItem.Name = "Freight";
    summaryItem.Aggregate = GridAggregateFunction.Sum ;
    GridViewSummaryRowItem summaryRowItem = new GridViewSummaryRowItem();
    summaryRowItem.Add(summaryItem);
    this.radGridView1.SummaryRowsTop.Add(summaryRowItem);
    this.radGridView1.SummaryRowsBottom.Add(summaryRowItem);
}

2. Filter the grid by EmployeeID for example. You will notice that the summary item for Freight is recalculated considering the filtered rows. However, the calculated column doesn't update its values.
Completed
Last Updated: 07 Dec 2016 07:42 by ADMIN
To reproduce:
- Select several rows and cells in excel and copy them.
- Paste in the self-reference grid.
- Only the first row is copied. 

Workaround:
private void RadGridView1_Pasting(object sender, GridViewClipboardEventArgs e)
{
    e.Cancel = true;

    List<List<string>> rows = this.GetTextData();
    PrintGridTraverser traverser = new PrintGridTraverser(this.radGridView1.MasterView);

    while (traverser.Current != this.radGridView1.CurrentRow)
    {
        traverser.MoveNext();
    }

    traverser.MovePrevious();
    int rowIndex = 0;
    int colIndex = this.radGridView1.CurrentColumn.Index;

    while (traverser.MoveNext() && rowIndex < rows.Count)
    {
        for (int i = colIndex; i < this.radGridView1.Columns.Count && i - colIndex < rows[rowIndex].Count; i++)
        {
            traverser.Current.Cells[i].Value = rows[rowIndex][i - colIndex];
        }

        rowIndex++;
    }
}