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.
Completed
Last Updated: 03 Feb 2016 07:36 by Svetlin
The GridViewNewRowInfo is in modified state when the DefaultValuesNeeded event is used. This causes the UserAddingRow event to be fired.

Workaround: 
void radGridView1_DefaultValuesNeeded(object sender, GridViewRowEventArgs e)
{
    e.Row.Cells["SearchType"].Value = "BI";
 
    FieldInfo fieldInfo = typeof(GridViewRowInfo).GetField("state", BindingFlags.NonPublic | BindingFlags.Instance);
    BitVector32 state = (BitVector32)fieldInfo.GetValue(e.Row);
    state[2] = false;
    fieldInfo.SetValue(e.Row, state);
 
    e.Row.InvalidateRow();
}
Completed
Last Updated: 25 Jan 2016 13:24 by ADMIN
Workaround:

private void grid_KeyDown(object sender, KeyEventArgs e)
{
    if (e.KeyCode == Keys.ShiftKey)
    {
        this.grid.MasterTemplate.ListSource.BeginUpdate();
    }
}

private void grid_KeyUp(object sender, KeyEventArgs e)
{
    if (e.KeyCode == Keys.ShiftKey)
    {
        this.grid.MasterTemplate.ListSource.EndUpdate();
    }
}