Completed
Last Updated: 22 Feb 2016 07:59 by ADMIN
To reproduce:

public Form1()
{
    InitializeComponent(); 
    List<Item> items = new List<Item>();
    items.Add(new Item(1,"sample"));
    items.Add(new Item(2, null));
    items.Add(new Item(3, "sample2"));
    this.radGridView1.DataSource = items;
    this.radGridView1.AutoSizeColumnsMode = Telerik.WinControls.UI.GridViewAutoSizeColumnsMode.Fill;
    this.radGridView1.EnableFiltering = true;
    this.radGridView1.ShowFilteringRow = false;
    this.radGridView1.ShowHeaderCellButtons = true; 
}

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

    public string Description { get; set; }

    public Item(int id, string description)
    {
        this.Id = id;
        this.Description = description;
    }
}

Workaround: If possible, instead of using null value, use empty string.
If not possible, you will have to employ 3 classes - MyFilterMenuTreeElement, MyFilterMenuTreeItem, MyListFilterPopup. The classes are provided in the attached project RadGridViewFiltering.zip. Once you add the classes to your project, all you have to do is to replace the default popup with the new one, in the FilterPopupRequired handler: 
		private void RadGridView1_FilterPopupRequired(object sender, FilterPopupRequiredEventArgs e)
        {
            if (e.FilterPopup is RadListFilterPopup)
            {
                e.FilterPopup = new MyListFilterPopup(e.Column);
            }
        }
		
The approach is also demonstrated in the attached project.
Completed
Last Updated: 19 Feb 2016 15:46 by ADMIN
Note: as a result ArgumentException is thrown when accessing a cell value.

To reproduce:

private DataTable dt;
private GridViewRowInfo selectedRow;

public Form1()
{
    InitializeComponent();

    PopulateGrid();
    PopulateGrid();
} 

private void PopulateGrid()
{
    dt = new DataTable();
    dt.Columns.Add("Version No", typeof(Int32));

    DataRow dr = dt.NewRow();
    dr["Version No"] = 2385;
    dt.Rows.Add(dr);

    this.radGridView1.DataSource = dt;

    MessageBox.Show(selectedRow.Cells[0].ColumnInfo.Name);
    MessageBox.Show(selectedRow.Cells[0].Value.ToString()); //This will error on the second time through
}

private void radGridView1_CurrentRowChanged(object sender, CurrentRowChangedEventArgs e)
{
    //This event is not firing on the second population of the grid in the new Telerik version.
    //In the old version, it did

    if (!this.radGridView1.CurrentRow.IsSystem && !this.radGridView1.CurrentRow.HasChildRows() && this.radGridView1.CurrentRow.Cells.Count > 0)
        selectedRow = this.radGridView1.CurrentRow;
}

Workaround: use the RadGridView.CurrentRow property directly when accessing the cell value.
Completed
Last Updated: 16 Feb 2016 09:12 by ADMIN
Work around: create a custom GridCheckBoxHeaderCellElement and override the SetCheckBoxState method

public class MyGridCheckBoxHeaderCellElement : GridCheckBoxHeaderCellElement
{
    public MyGridCheckBoxHeaderCellElement(GridViewColumn column, GridRowElement row)
        : base(column, row)
    {
    }

    protected override Type ThemeEffectiveType
    {
        get { return typeof(GridHeaderCellElement); }
    }

    protected override bool SetCheckBoxState()
    {
        bool foundNonCheckedRows = false;
        foreach (GridViewRowInfo row in this.ViewInfo.Rows)
        {
            foundNonCheckedRows = this.CheckCheckBoxValueForAllRows(row, foundNonCheckedRows);
            if (foundNonCheckedRows)
            {
                SetCheckBoxState(ToggleState.Off);
                break;
            }
        }

        if (!foundNonCheckedRows && this.ViewInfo.Rows.Count > 0) //we must have at least one row in order to check the header cell
        {
            SetCheckBoxState(ToggleState.On);
        }

        return foundNonCheckedRows;
    }

    private bool CheckCheckBoxValueForAllRows(GridViewRowInfo row, bool foundNonCheckedRows)
    {
        GridViewChildRowCollection currentRowColection;
        if (foundNonCheckedRows)
        {
            return foundNonCheckedRows;
        }


        if (row.HasChildRows())
        {
            currentRowColection = row.ChildRows;
        }
        else
        {
            currentRowColection = row.ViewInfo.Rows;
        }

        foreach (GridViewRowInfo rowInfo in currentRowColection)
        {
            GridViewGroupRowInfo groupInfo = rowInfo as GridViewGroupRowInfo;
            if (groupInfo != null)
            {
                foundNonCheckedRows = this.CheckCheckBoxValueForAllRows(groupInfo, foundNonCheckedRows);
            }
            else
            {
                object cellValue = rowInfo.Cells[this.ColumnIndex].Value;
                bool? valueFromColumnTypeConvertor = null;
                if (this.ColumnInfo is GridViewDataColumn)
                {
                    TypeConverter convertor = ((GridViewDataColumn)this.ColumnInfo).DataTypeConverter;
                    if (convertor != null && (convertor.CanConvertTo(typeof(bool)) || convertor.CanConvertTo(typeof(ToggleState))))
                    {
                        try
                        {
                            valueFromColumnTypeConvertor = Convert.ToBoolean(convertor.ConvertTo(cellValue, typeof(bool)));
                        }
                        catch (FormatException)//convert to bool fails
                        {
                        }
                        catch (NotSupportedException)//coverting NULL
                        {
                        }
                    }
                }

                try
                {
                    if (rowInfo != this.RowInfo &&
                        (cellValue == null || cellValue == DBNull.Value) ||
                        (valueFromColumnTypeConvertor.HasValue && !valueFromColumnTypeConvertor.Value) ||
                        (!valueFromColumnTypeConvertor.HasValue && !Convert.ToBoolean(cellValue)))
                    {
                        foundNonCheckedRows = true;
                    }
                }
                catch (FormatException)//convert to bool fails
                {
                }
            }
        }

        return foundNonCheckedRows;
    }
}

Completed
Last Updated: 13 Feb 2016 09:28 by ADMIN
FIX. RadGridView - exception when binding to entities collection and specifying DataMember under Windows XP
Completed
Last Updated: 12 Feb 2016 08:53 by ADMIN
To reproduce: use the following code snippet and try to delete a child row:

public Form1()
{
    InitializeComponent();

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

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

    Random rand = new Random();
    for (int i = 5; i < 30; i++)
    {
        dt.Rows.Add(i, rand.Next(0, 5), "Child item" + i);
    }
    this.radGridView1.Relations.AddSelfReference(this.radGridView1.MasterTemplate, "Id", "ParentId");
    this.radGridView1.DataSource = dt;
    this.radGridView1.AutoSizeColumnsMode = Telerik.WinControls.UI.GridViewAutoSizeColumnsMode.Fill;

    this.radGridView1.UserDeletingRow += radGridView1_UserDeletingRow;
}

private void radGridView1_UserDeletingRow(object sender, Telerik.WinControls.UI.GridViewRowCancelEventArgs e)
{
    if (this.radGridView1.CurrentRow.HasChildRows())
    {
        DialogResult dialogResult = MessageBox.Show("Are you sure you want to delete this row?",
            "Delete Row confirmation", MessageBoxButtons.YesNo);
        if (dialogResult == DialogResult.No)
        {
            e.Cancel = true;
        }
    }
}

Workaround: use the RadGridView.CurrentRow.ChildRows.Count property.
Completed
Last Updated: 11 Feb 2016 14:42 by ADMIN
Please refer to the attached sample project.

Workaround:

public class MyGridCheckBoxCellElement : GridCheckBoxCellElement
{
    public MyGridCheckBoxCellElement(GridViewColumn column, GridRowElement row) : base(column, row)
    {
    }

    protected override Type ThemeEffectiveType
    {
        get
        {
            return typeof(GridCheckBoxCellElement);
        }
    }

    public override bool IsCompatible(GridViewColumn data, object context)
    {
        GridViewCheckBoxColumn col = data as GridViewCheckBoxColumn;
        if (col != null)
        {
            return col.ThreeState == ((RadCheckBoxEditor)this.Editor).ThreeState;
        }
        return base.IsCompatible(data, context);
    }
}

private void radGridView1_CreateCell(object sender, GridViewCreateCellEventArgs e)
{
    if (e.CellType == typeof(GridCheckBoxCellElement))
    {
        e.CellElement = new MyGridCheckBoxCellElement(e.Column, e.Row);
    }
}
Completed
Last Updated: 11 Feb 2016 13:29 by ADMIN
To reproduce:
-Create a new ColumnGroupsViewDefinition and pin the first group.
- Asign the view to the grid.

Workaround:
Pin the group after the view is asigned.
 
Completed
Last Updated: 10 Feb 2016 12:27 by ADMIN
How to reproduce:

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

        this.radGridView1.DataSource = this.GetData();
        this.radGridView1.AutoSizeColumnsMode = GridViewAutoSizeColumnsMode.Fill;
        this.radGridView1.RightToLeft = System.Windows.Forms.RightToLeft.Yes;

        foreach (var col in this.radGridView1.Columns)
        {
            col.HeaderTextAlignment = ContentAlignment.MiddleLeft;
        }
    }

    private DataTable GetData()
    {
        DataTable dt = new DataTable();
        dt.Columns.Add("Name", typeof(string));
        dt.Columns.Add("Date", typeof(DateTime));
        dt.Columns.Add("Bool", typeof(bool));
        dt.Columns.Add("Bool1", typeof(bool));
        dt.Columns.Add("Bool2", typeof(bool));
        for (int i = 0; i < 50; i++)
        {
            dt.Rows.Add("Name " + i, DateTime.Now.AddMinutes(i), i % 2 == 0 ? true : false, false, false);
        }

        return dt;
    }

    private void radButton1_Click(object sender, EventArgs e)
    {
        this.radGridView1.PrintPreview();
    }
}



Workaround: 

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

        this.radGridView1.DataSource = this.GetData();
        this.radGridView1.AutoSizeColumnsMode = GridViewAutoSizeColumnsMode.Fill;
        this.radGridView1.RightToLeft = System.Windows.Forms.RightToLeft.Yes;
        this.radGridView1.PrintCellFormatting += radGridView1_PrintCellFormatting;

        foreach (var col in this.radGridView1.Columns)
        {
            col.HeaderTextAlignment = ContentAlignment.MiddleLeft;
        }
    }

    private void radGridView1_PrintCellFormatting(object sender, PrintCellFormattingEventArgs e)
    {
        if (e.Row is GridViewTableHeaderRowInfo && this.radGridView1.RightToLeft == System.Windows.Forms.RightToLeft.Yes)
        {
            e.PrintCell.TextAlignment = ContentAlignment.MiddleRight;
        }
    }

    private DataTable GetData()
    {
        DataTable dt = new DataTable();
        dt.Columns.Add("Name", typeof(string));
        dt.Columns.Add("Date", typeof(DateTime));
        dt.Columns.Add("Bool", typeof(bool));
        dt.Columns.Add("Bool1", typeof(bool));
        dt.Columns.Add("Bool2", typeof(bool));
        for (int i = 0; i < 50; i++)
        {
            dt.Rows.Add("Name " + i, DateTime.Now.AddMinutes(i), i % 2 == 0 ? true : false, false, false);
        }

        return dt;
    }

    private void radButton1_Click(object sender, EventArgs e)
    {
        this.radGridView1.PrintPreview();
    }
}
Completed
Last Updated: 10 Feb 2016 06:16 by ADMIN
Workaround: subscribe to the PageChanged event and update the scroll range.
private void RadGridView1_PageChanged(object sender, EventArgs e)
{
	this.RadGridView1.TableElement.RowScroller.UpdateScrollRange();
}
Completed
Last Updated: 10 Feb 2016 05:53 by ADMIN
To reproduce:
- Add a grid with some columns at design time.
- Open the designer code and you will notice the TableViewDefinition.

Workaround:
Manually delete the TableViewDefinition. 
Completed
Last Updated: 10 Feb 2016 05:52 by ADMIN
To reproduce:
- Add a ColumnGroupsViewDefinition

protected override void OnShown(EventArgs e)
{
    base.OnShown(e);
    VisualStudio2012LightTheme theme = new VisualStudio2012LightTheme();
    Telerik.WinControls.ThemeResolutionService.ApplicationThemeName = theme.ThemeName;
     this.radGridView1.BestFitColumns();
}

Workaround:
protected override void OnShown(EventArgs e)
{
    base.OnShown(e);
    this.radGridView1.BestFitColumns();
    VisualStudio2012LightTheme theme = new VisualStudio2012LightTheme();
    Telerik.WinControls.ThemeResolutionService.ApplicationThemeName = theme.ThemeName;
}
Completed
Last Updated: 08 Feb 2016 15:02 by ADMIN
To reproduce:
- Add a grid to a split panel.
- Edit a cell and resize the panel without ending the edit.
- Click back in the same cell.

Workaround:
private void RadGridView1_CellEditorInitialized(object sender, GridViewCellEventArgs e)
{
    BaseGridEditor editor = e.ActiveEditor as BaseGridEditor;
    var element = editor.EditorElement as RadTextBoxEditorElement;
    if (element != null)
    {
        element.TextBoxItem.HostedControl.LostFocus -= HostedControl_LostFocus;
        element.TextBoxItem.HostedControl.LostFocus += HostedControl_LostFocus;
    }
}

private void HostedControl_LostFocus(object sender, EventArgs e)
{
    this.RadGridView1.EndEdit();
}
Completed
Last Updated: 08 Feb 2016 11:37 by ADMIN
Completed
Last Updated: 08 Feb 2016 11:03 by ADMIN
To reproduce:
- Bind the grid to a list of the following objects:
public class Test
{
    private Status _Status = Status.Value1;
    public Status Status
    {
        get { return _Status; }
        set { _Status = value; }
    }

    private string _Name = "";
    public string Name
    {
        get { return _Name; }
        set { _Name = value; }
    }
}
public enum Status
{
    Value1,
    Value2,
    Value3
}

- Group Name column.
- Open at least one group.
- Close grouping.
- Group status column.
- Try to open status group.


Workaround:
GridViewComboBoxColumn col = radGridView1.Columns[0] as GridViewComboBoxColumn;
col.DisplayMemberSort = true;
Completed
Last Updated: 08 Feb 2016 09:26 by ADMIN
Please refer to the attached sample project and follow the steps illustrated on the attached gif file.

Workaround: subscribe to the CellBeginEdit event and focus the grid:

public partial class UserControl1 : UserControl
{
    public UserControl1()
    {
        InitializeComponent();
        this.radGridView1.CellBeginEdit += radGridView1_CellBeginEdit;
    }

    private void radGridView1_CellBeginEdit(object sender, GridViewCellCancelEventArgs e)
    {
        this.radGridView1.Focus();
    } 
}
Completed
Last Updated: 08 Feb 2016 09:02 by ADMIN
To reproduce:
- Create a new Visual Studio project with a single form.
- Add a RadGridView control to the form.
- Add a child Template to the RadGridView.
- In the properties of this child template, enable AutoExpand Groups.
- Close the form editor and re-open.
Completed
Last Updated: 08 Feb 2016 08:37 by ADMIN
To reproduce:
- Set the row height to 1000.
- Call the grid PrintPreview method.

As workaround one can set the MaxHeight of the rows prior printing.
Completed
Last Updated: 05 Feb 2016 13:29 by ADMIN
To reproduce:

1. Add a UserControl and drop a RadGridView in it.
2. Use the following code:

public partial class UserControl1 : UserControl
{
    public UserControl1()
    {
        InitializeComponent();
        ColumnGroupsViewDefinition view = new ColumnGroupsViewDefinition();
       
      this.radGridView1.ViewDefinition = view;
        
        view.ColumnGroups.Add(new GridViewColumnGroup("Group"));
        view.ColumnGroups[0].Rows.Add(new GridViewColumnGroupRow() );
        GridViewTextBoxColumn col = new GridViewTextBoxColumn("Col1");
        this.radGridView1.Columns.Add(col);
        view.ColumnGroups[0].Rows[0].ColumnNames.Add("Col1");           
    }
}

3. Drag the UserControl from the Toolbox to the form.

Workaround: set the ViewDefinition property after all columns are added.
Completed
Last Updated: 04 Feb 2016 10:39 by ADMIN
To reproduce:
- Show a message box in the CellValidating event handler.
- Start the application, edit a cell and directly press the vertical scroll bottom arrow.

 
Completed
Last Updated: 03 Feb 2016 12:13 by ADMIN
Steps to reproduce:
- Create a hierarchy grid with four child templates.
- Add group descriptors for each template in code - add it before setting the data source of the tempaltes.

Workaround:
Add the groups descriptor after the data source of the template is set.