Unplanned
Last Updated: 26 Mar 2018 11:38 by ADMIN
Use attached project to reproduce!

Another case is when the font size is changed from the settings dialog - in this case, the row height is not adjusted.

Workaround:
Use the following custom print style:

class MyTableViewDefinitionPrintRenderer : TableViewDefinitionPrintRenderer
{
    public MyTableViewDefinitionPrintRenderer(RadGridView grid) : base(grid)
    {

    }
    protected override int GetDataRowHeight(GridViewRowInfo row, TableViewRowLayoutBase rowLayout)
    {
        int result = base.GetDataRowHeight(row, rowLayout);

        int newHeight = 0;

        if (!(row is GridViewGroupRowInfo))
        {
            foreach (GridViewColumn col in row.ViewTemplate.Columns)
            {
                if (col is GridViewRowHeaderColumn || col is GridViewIndentColumn || !col.IsVisible)
                {
                    continue;
                }

                string value = row.Cells[col.Name].Value.ToString();

                TableViewCellArrangeInfo info = ((TableViewRowLayout)rowLayout).LayoutImpl.GetArrangeInfo(col);
                float cellWidth = (float)info.CachedWidth;
                int currentHeight = TextRenderer.MeasureText(value, this.GridView.PrintStyle.CellFont, new Size((int)cellWidth, 0), TextFormatFlags.WordBreak).Height + this.GridView.Font.Height *4;

                newHeight = Math.Max(newHeight, currentHeight);

            }
        }


        return Math.Max(newHeight, result); 
    }
}
class MyPrintStyle :GridPrintStyle
{
    protected override BaseGridPrintRenderer InitializePrintRenderer(RadGridView grid)
    {
        return new MyTableViewDefinitionPrintRenderer(grid);
    }
}
Completed
Last Updated: 15 Aug 2017 10:28 by ADMIN
To reproduce:
private void RadGridView1_KeyPress(object sender, KeyPressEventArgs e)
{
    int startIndex = radGridView1.CurrentRow.Index +1;

    for (int i = startIndex; i < radGridView1.Rows.Count; i++)
    {
        var value = radGridView1.Rows[i].Cells["Name"].Value.ToString().ToLower();
        if (value.StartsWith(e.KeyChar.ToString()))
        {
            radGridView1.TableElement.ScrollToRow(radGridView1.Rows[i]);
            radGridView1.ClearSelection();
            radGridView1.Rows[i].IsSelected = true;
            radGridView1.Rows[i].IsCurrent = true;
            radGridView1.Columns[1].IsCurrent = true;
            break;
        }
    }
}

- Press some key so the grid is scrolled down, then press the down key.
- The first row is selected instead of the next one. 

Workaround:
remove this line:
radGridView1.Rows[i].IsSelected = true;
Completed
Last Updated: 15 Aug 2017 10:28 by ADMIN
To reproduce:
1. Run the attached sample project.
2. Right-click the grid.
3. Quickly navigate to another application (e.g. Windows Explorer) before the context menu is shown & wait at windows explorer to display the menu
4. The context will be stuck.
Unplanned
Last Updated: 19 Jun 2017 10:22 by ADMIN
To reproduce: run the attached sample project and you will notice that the top border is missing as it is illustrated in the screenshot. 

Workaround:  set the RadGridView.AutoSizeRows property to false.
Declined
Last Updated: 01 May 2017 10:27 by ADMIN
Unplanned
Last Updated: 05 Apr 2017 14:22 by ADMIN
To reproduce:
public RadForm1()
{
    InitializeComponent();
    radGridView1.DataSource = GetTable();
    GridViewSummaryItem summaryItem = new GridViewSummaryItem();
    summaryItem.Name = "Name";
    summaryItem.Aggregate = GridAggregateFunction.Count;
    GridViewSummaryRowItem summaryRowItem = new GridViewSummaryRowItem();
    summaryRowItem.Add(summaryItem);
    this.radGridView1.SummaryRowsBottom.Add(summaryRowItem);

    radGridView1.ViewCellFormatting += RadGridView1_ViewCellFormatting;
}

private void RadGridView1_ViewCellFormatting(object sender, CellFormattingEventArgs e)
{
    if (e.CellElement is GridSummaryCellElement)
    {
        e.CellElement.DrawFill = true;
        e.CellElement.GradientStyle = Telerik.WinControls.GradientStyles.Solid;
        e.CellElement.BackColor = Color.Red;

    }
    else
    {
        e.CellElement.ResetValue(LightVisualElement.BackColorProperty, Telerik.WinControls.ValueResetFlags.Local);
        e.CellElement.ResetValue(LightVisualElement.GradientStyleProperty, Telerik.WinControls.ValueResetFlags.Local);
        e.CellElement.ResetValue(LightVisualElement.DrawFillProperty, Telerik.WinControls.ValueResetFlags.Local);
    }
}

protected override void OnLoad(EventArgs e)
{
    base.OnLoad(e);
    radGridView1.MasterView.SummaryRows[0].PinPosition = PinnedRowPosition.Bottom;
}

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));

    for (int i = 0; i < 5; i++)
    {


        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);
    }
    return table;
}
private void radButton1_Click(object sender, EventArgs e)
{

    radGridView1.SaveLayout("test.xml");
}

private void radButton2_Click(object sender, EventArgs e)
{
    radGridView1.SummaryRowsBottom.Clear();
    radGridView1.SummaryRowsTop.Clear();
    radGridView1.LoadLayout("test.xml");
}
Completed
Last Updated: 19 Jun 2017 12:09 by ADMIN
To reproduce:
this.radGridView1.MultiSelect = true;
this.radGridView1.SelectionMode = Telerik.WinControls.UI.GridViewSelectionMode.CellSelect;

radGridView1.ShowRowHeaderColumn = false;

Then select the cells in the firs column by dragging the mouse.

Workaround:
// radGridView1.ShowRowHeaderColumn = false;
radGridView1.TableElement.RowHeaderColumnWidth = 0;

Completed
Last Updated: 12 Feb 2018 09:12 by Don
Workaround: handle the GridViewPdfExport.CellFormatting event and apply the column`s format string

Public Class Form1
    Sub New()

        InitializeComponent()

        Me.RadGridView1.DataSource = Me.GetData()
        Me.RadGridView1.AutoSizeColumnsMode = Telerik.WinControls.UI.GridViewAutoSizeColumnsMode.Fill

        Dim decimalColumn = DirectCast(Me.RadGridView1.Columns("Money"), GridViewDecimalColumn)
        decimalColumn.DecimalPlaces = 0
        decimalColumn.FormatString = "{0:C0}"

        Dim dateTimeColumn = DirectCast(Me.RadGridView1.Columns("Date"), GridViewDateTimeColumn)
        dateTimeColumn.FormatString = "{0:D}"

    End Sub

    Private Function GetData() As Object
        Dim dataTable As New DataTable()
        dataTable.Columns.Add("Id", GetType(Integer))
        dataTable.Columns.Add("Name", GetType(String))
        dataTable.Columns.Add("Money", GetType(Decimal))
        dataTable.Columns.Add("Date", GetType(DateTime))

        For i As Integer = 0 To 999
            dataTable.Rows.Add(i, "Name " & i, i * 10, DateTime.Now.AddDays(i))
        Next

        Return dataTable
    End Function

    Private Sub RadButton1_Click(sender As Object, e As EventArgs) Handles RadButton1.Click
        Dim pdfExporter = New GridViewPdfExport(Me.RadGridView1)
        AddHandler pdfExporter.CellFormatting, AddressOf pdfExporter_CellFormatting
        Dim renderer = New PdfExportRenderer()
        Dim fileName As String = "..\..\exported-grid.pdf"

        pdfExporter.RunExport(fileName, renderer)
    End Sub

    Private Sub pdfExporter_CellFormatting(sender As Object, e As PdfExportCellFormattingEventArgs)
        If e.RowIndex > -1 Then
            e.CellElement.Text = TryCast(RadDataConverter.Instance.Format(e.Row.Cells(e.ColumnIndex).Value, GetType(String), e.Column), String)
        End If
    End Sub

End Class
Completed
Last Updated: 28 Sep 2018 11:29 by Dimitar
How to reproduce:
public partial class Form1 : Form
{
    private RadGridView grid = new RadGridView();

    public Form1()
    {
        InitializeComponent();

        Controls.Add(grid);
        grid.Dock = DockStyle.Fill;
        grid.DataSource = this.GetData();
    }

    private object GetData()
    {
        DataTable dataTable = new DataTable();
        dataTable.Columns.Add("Id", typeof(int));
        dataTable.Columns.Add("Name", typeof(string));
        dataTable.Columns.Add("Checked", typeof(bool));

        for (int i = 0; i < 200; i++)
        {
            dataTable.Rows.Add(i, "Name " + i, i % 2 == 0);
        }

        return dataTable;
    }

    protected override void OnLoad(EventArgs e)
    {
        base.OnLoad(e);

        grid.AutoSizeColumnsMode = GridViewAutoSizeColumnsMode.Fill;

        GridViewCheckBoxColumn checkBoxColumn = (GridViewCheckBoxColumn)grid.Columns["Checked"];
        checkBoxColumn.EnableHeaderCheckBox = true;
        checkBoxColumn.SortOrder = RadSortOrder.Ascending;
    }
}

Workaround: 
public partial class Form1 : Form
{
    private RadGridView grid = new RadGridView();

    public Form1()
    {
        InitializeComponent();

        Controls.Add(grid);
        grid.Dock = DockStyle.Fill;
        grid.DataSource = this.GetData();

        grid.MouseDown += grid_MouseDown;
        grid.MouseUp += grid_MouseUp;
    }

    private object GetData()
    {
        DataTable dataTable = new DataTable();
        dataTable.Columns.Add("Id", typeof(int));
        dataTable.Columns.Add("Name", typeof(string));
        dataTable.Columns.Add("Checked", typeof(bool));

        for (int i = 0; i < 200; i++)
        {
            dataTable.Rows.Add(i, "Name " + i, i % 2 == 0);
        }

        return dataTable;
    }

    private void grid_MouseDown(object sender, MouseEventArgs e)
    {
        RadGridView grid = (RadGridView)sender;
        RadCheckBoxElement cell = grid.ElementTree.GetElementAtPoint(e.Location) as RadCheckBoxElement;
        if (cell != null && cell.Parent is GridCheckBoxHeaderCellElement)
        {
            sw = new Stopwatch();
            sw.Start();
            grid.BeginUpdate();
        }
    }

    Stopwatch sw;
    private void grid_MouseUp(object sender, MouseEventArgs e)
    {
        RadGridView grid = (RadGridView)sender;
        RadCheckBoxElement cell = grid.ElementTree.GetElementAtPoint(e.Location) as RadCheckBoxElement;
        if (cell != null && cell.Parent is GridCheckBoxHeaderCellElement)
        {
            grid.EndUpdate();
            sw.Stop();
            Console.WriteLine(sw.ElapsedMilliseconds);
        }
    }

    protected override void OnLoad(EventArgs e)
    {
        base.OnLoad(e);

        grid.AutoSizeColumnsMode = GridViewAutoSizeColumnsMode.Fill;

        GridViewCheckBoxColumn checkBoxColumn = (GridViewCheckBoxColumn)grid.Columns["Checked"];
        checkBoxColumn.EnableHeaderCheckBox = true;
        checkBoxColumn.SortOrder = RadSortOrder.Ascending;
    }
}


Completed
Last Updated: 15 Aug 2017 10:20 by ADMIN
ADMIN
Created by: Dess | Tech Support Engineer, Principal
Comments: 0
Category: GridView
Type: Bug Report
1
To reproduce: please refer to the attached sample project and follow the steps in the provided gif file: 
1. Enter something in the search bar
2. Filter on some column, uncheck "All", then select a few items, then validate
3. Click on a random row on the grid
4. Filter on the same column as in 2., check "All", then uncheck a few items, then validate

Workaround:

private void radGridView1_FilterChanged(object sender, Telerik.WinControls.UI.GridViewCollectionChangedEventArgs e)
{
    this.radGridView1.MasterTemplate.Refresh();
}
Declined
Last Updated: 19 Jun 2017 12:43 by ADMIN
To reproduce
- Start the attached project press "Add in code"  then "Save"
- The row is still not added to the underlying data table. 

Workaround:
TryCast(Me.radGridView1.Rows.Last().DataBoundItem, IEditableObject).EndEdit()
Completed
Last Updated: 15 Aug 2017 10:20 by ADMIN
Please refer to the attached sample project and gif file illustrating the behavior.
ColumnGroupsViewDefinition view = this.radGridView1.ViewDefinition as ColumnGroupsViewDefinition;

            foreach (GridViewColumnGroup group in view.ColumnGroups)
            {
                group.ShowHeader = false;
            }

Workaround: use the ViewCellFormatting and enable the back color for the header cells that are over the hidden group headers

public RadForm1()
{
    InitializeComponent();

    ColumnGroupsViewDefinition view = this.radGridView1.ViewDefinition as ColumnGroupsViewDefinition ;
    foreach (GridViewColumnGroup group in view.ColumnGroups)
    {
        group.ShowHeader = false;
    }
}

private void radGridView1_ViewCellFormatting(object sender, CellFormattingEventArgs e)
{
    if (e.Row is GridViewTableHeaderRowInfo && !(e.CellElement is GridColumnGroupCellElement))
    {
        e.CellElement.DrawFill = true;
        e.CellElement.BackColor = Color.FromArgb(234, 242, 252);
        e.CellElement.GradientStyle = GradientStyles.Solid;
    }
    else
    { 
        e.CellElement.ResetValue(LightVisualElement.DrawFillProperty, ValueResetFlags.Local);
        e.CellElement.ResetValue(LightVisualElement.BackColorProperty, ValueResetFlags.Local);
        e.CellElement.ResetValue(LightVisualElement.GradientStyleProperty, ValueResetFlags.Local);
    }
}
Completed
Last Updated: 15 Aug 2017 10:20 by ADMIN
How to reproduce:
public partial class Form1 : Form
{
    public class Data
    {
        public bool Checked { get; set; }
        public string Text { get; set; }
    }

    private readonly RadGridView _grid;

    private readonly List<Data> _dataList = new List<Data>
    {
        new Data {Text = "abc"},
        new Data {Text = "def"},
        new Data {Text = "ghi"},
        new Data {Text = "jkl"},
        new Data {Text = "mno"},
        new Data {Text = "pqr"},
        new Data {Text = "stu"},
        new Data {Text = "vwx"},
        new Data {Text = "yz0"}
    };

    public Form1()
    {
        InitializeComponent();

        _grid = new RadGridView
        {
            Dock = DockStyle.Fill,
            AllowSearchRow = true
        };

        Controls.Add(_grid);

        _grid.DataSource = _dataList;
    }

    protected override void OnLoad(EventArgs e)
    {
        base.OnLoad(e);

        _grid.AutoSizeColumnsMode = GridViewAutoSizeColumnsMode.Fill;
        ((GridViewCheckBoxColumn)_grid.Columns["Checked"]).EnableHeaderCheckBox = true;
        
        _grid.Columns["Checked"].SortOrder = RadSortOrder.Ascending;
        ((GridViewCheckBoxColumn)_grid.Columns["Checked"]).Checked = ToggleState.On;
        _grid.MasterView.TableSearchRow.Search("abc");
    }
}

Workaround: clear the search text
protected override void OnLoad(EventArgs e)
{
    base.OnLoad(e);

    _grid.AutoSizeColumnsMode = GridViewAutoSizeColumnsMode.Fill;
    ((GridViewCheckBoxColumn)_grid.Columns["Checked"]).EnableHeaderCheckBox = true;
    
    _grid.Columns["Checked"].SortOrder = RadSortOrder.Ascending;
    ((GridViewCheckBoxColumn)_grid.Columns["Checked"]).Checked = ToggleState.On;
    _grid.MasterView.TableSearchRow.Search("abc");

    this._grid.MouseDown += _grid_MouseDown;
}

private void _grid_MouseDown(object sender, MouseEventArgs e)
{
    RadGridView grid = (RadGridView)sender;
    RadCheckBoxElement cell = grid.ElementTree.GetElementAtPoint(e.Location) as RadCheckBoxElement;
    if (cell != null && cell.Parent is GridCheckBoxHeaderCellElement && grid.SortDescriptors.Count > 0))
    {
        grid.MasterView.TableSearchRow.Search("");
    }
}
Declined
Last Updated: 06 Feb 2018 06:47 by ADMIN
To reproduce: please refer to the attached gif file and sample project.

Workaround: when you set the DrawFill property to true, specify the BackColor to the desired one and reset for the rest of the cells.

private void radGridView1_CellFormatting(object sender, Telerik.WinControls.UI.CellFormattingEventArgs e)
{
    if (e.Column.Name == "ProductName" && e.Row is GridViewDataRowInfo)
    {
        if (e.CellElement.Value.ToString().Contains("C"))
        {
            e.CellElement.DrawFill = true;
            e.CellElement.BackColor = Color.Yellow;
            e.CellElement.GradientStyle = GradientStyles.Solid;
            e.CellElement.ForeColor = Color.OliveDrab;
        }
        else
        { 
            e.CellElement.ResetValue(LightVisualElement.DrawFillProperty, ValueResetFlags.Local);
            e.CellElement.ResetValue(LightVisualElement.GradientStyleProperty, ValueResetFlags.Local);
            e.CellElement.ResetValue(LightVisualElement.ForeColorProperty, ValueResetFlags.Local);  
            e.CellElement.ResetValue(LightVisualElement.BackColorProperty, ValueResetFlags.Local);  
        }
    }
    else
    { 
        e.CellElement.ResetValue(LightVisualElement.DrawFillProperty, ValueResetFlags.Local);
        e.CellElement.ResetValue(LightVisualElement.GradientStyleProperty, ValueResetFlags.Local);
        e.CellElement.ResetValue(LightVisualElement.ForeColorProperty, ValueResetFlags.Local);    
        e.CellElement.ResetValue(LightVisualElement.BackColorProperty, ValueResetFlags.Local);  
    }
}
Completed
Last Updated: 15 Aug 2017 10:20 by ADMIN
To reproduce:
protected override void OnLoad(EventArgs e)
{
    base.OnLoad(e);
    DataTable dt = NewDt();
    this.radGridView1.DataSource = dt;      
    var c = this.radGridView1.Columns["Calculted"] as GridViewDecimalColumn;
    c.EnableExpressionEditor = true;
    c.Expression = "Column2 / SUM(Column2) * 10";
    c.DecimalPlaces = 2;
    c.FormatString = "{0:N2}";

    this.radGridView1.GroupDescriptors.Add("GroupByColumn", ListSortDirection.Ascending);
}

private DataTable NewDt()
{
    var dt = new DataTable();
    dt.Columns.Add("ItemColumn");
    dt.Columns.Add("GroupByColumn");
    dt.Columns.Add("Column2", typeof(decimal));
    dt.Columns.Add("Calculted", typeof(decimal));

    for (int i = 1; i <= 20; i++)
    {
        string gr = string.Empty;
        if (i % 3 == 0)
            gr = "gr3";
        else if (i % 2 == 0)
            gr = "gr2";
        else if (i % 5 == 0)
            gr = "gr5";
        else
            gr = "item" + i.ToString();

        dt.Rows.Add("id #" + i.ToString(), gr, i, 0);
    }
    return dt;
}

Workaround:
public class CustomExpressionContext : Telerik.Data.Expressions.ExpressionContext
{

    RadGridView radGridView;
    public CustomExpressionContext(RadGridView grid)
    {
        this.radGridView = grid;
    }

    public decimal MySum(string columnName)
    {
        decimal sum = 0;
        
        foreach (var item in radGridView.Rows)
        {
            sum += (decimal)item.Cells[columnName].Value;
        }
        return sum;
    }
}

 Telerik.Data.Expressions.ExpressionContext.Context = new CustomExpressionContext(this.radGridView1);
Completed
Last Updated: 18 Jul 2017 09:56 by ADMIN
ADMIN
Created by: Dess | Tech Support Engineer, Principal
Comments: 0
Category: GridView
Type: Bug Report
4
To reproduce: please refer to the attached sample project and gif file illustrating the behavior. Add cell value in the new row and press teh down arrow.

Workaround: this.radGridView1.MasterTemplate.SelectLastAddedRow = false;

This problem is applicable for OpenEdge as well: http://knowledgebase.progress.com/articles/Article/Telerik-RadGridView-highlights-unnecessary-columns-and-rows-in-batch-mode
Declined
Last Updated: 17 May 2017 05:15 by ADMIN
To reproduce: please refer to the attached sample project and gif file illustrating the behavior.

Workaround: in order to cancel adding of the new row, you can call the MasterView.TableAddNewRow.CancelAddNewRow method:

private void radGridView1_UserAddingRow(object sender, Telerik.WinControls.UI.GridViewRowCancelEventArgs e)
{
    e.Cancel = true;
    this.radGridView1.MasterView.TableAddNewRow.CancelAddNewRow(); 
    int index = this.radGridView1.Rows.Count;
    this.radGridView1.Rows.Add(index, "Row" + index);
}
Completed
Last Updated: 13 Jun 2018 08:48 by Dimitar
To reproduce:
private void MasterTemplate_ViewChanged(object sender, DataViewChangedEventArgs args)
{
    if (args.Action == ViewChangedAction.ExpandedChanged)
    {

    }
}
Workaround:
- Use the GroupExpanded event.
Completed
Last Updated: 18 May 2017 13:01 by ADMIN
To reproduce:
- Add default values for all cells in the grid.
- Try to add the new row without changing any value.

Workaround:
private void RadGridView1_CellEditorInitialized(object sender, GridViewCellEventArgs e)
{
    var editor = radGridView1.ActiveEditor as BaseInputEditor;
    var field = editor.GetType().GetField("originalValue", BindingFlags.NonPublic | BindingFlags.Instance);
    field.SetValue(editor, "asd");
}
Completed
Last Updated: 19 Jun 2017 12:07 by ADMIN
To reproduce:
- Add DateTime columns to the grid and set the MaskType of the editor to FreeFormDateTime.
- Go to the new row enter a valid date and press Tab.

Workaround:
class Myditor : RadDateTimeEditor
{
    public override bool IsModified
    {
        get
        {
            return true;

        }
    }
}