Completed
Last Updated: 31 Mar 2014 09:22 by ADMIN
To reproduce: - add RadGridView and populate manually with hierarchical data; 

- BestFitColumns method of the child template does not work as expected; 

#1 scenario: radGridView1.MasterTemplate.ExpandAll(); radGridView1.Templates[0].ExpandAll(); radGridView1.Templates[0].BestFitColumns(BestFitColumnMode.AllCells); You will notice that some of the columns in the child template are not wide enough to show the whole cell content; 

#2 scenario: Subscribe to the ChildViewExpanded event and call BestFitColumns: private void radGridView1_ChildViewExpanded(object sender, ChildViewExpandedEventArgs e) { e.ChildViewInfo.ViewTemplate.BestFitColumns(BestFitColumnMode.AllCells); } 

As a result the firstly expanded child view adjusts child template columns width and if you expand another child view which needs greater columns width, it is not displayed correctly. 

Workaround: determine the column width according to the longest cell content: foreach (GridViewDataColumn col in radGridView1.Templates[0].Columns) { BestFitAllCells(col); } private void BestFitAllCells(GridViewColumn column) { MasterGridViewTemplate masterTemplate = column.OwnerTemplate.Parent as MasterGridViewTemplate; if (masterTemplate == null) { return; } RadGridView grid = masterTemplate.Owner; IVirtualizedElementProvider<GridViewRowInfo> rowProvider = grid.TableElement.RowElementProvider; IVirtualizedElementProvider<GridViewColumn> cellProvider = grid.TableElement.ColumnScroller.ElementProvider; float width = 0; foreach (GridViewRowInfo dataRow in column.OwnerTemplate.Rows) { GridRowElement row = rowProvider.GetElement(dataRow, null) as GridRowElement; row.InitializeRowView(grid.TableElement); row.Initialize(dataRow); row.UpdateInfo(); grid.TableElement.Children.Add(row); row.ResetLayout(true); GridVirtualizedCellElement cell = cellProvider.GetElement(column, row) as GridVirtualizedCellElement; cell.Attach(column, row); cell.SetContent(); cell.UpdateInfo(); row.Children.Add(cell); GridHeaderCellElement headerCell = cell as GridHeaderCellElement; if (headerCell != null) { headerCell.UpdateArrowState(); } cell.ResetLayout(true); width = Math.Max(width, this.GetCellDesiredWidth(cell)); row.Children.Remove(cell); grid.TableElement.Children.Remove(row); this.Detach(cellProvider, cell); this.Detach(rowProvider, row); } width = Math.Max(width, TextRenderer.MeasureText(column.HeaderText, grid.Font).Width); column.Width = (int)width; } private float GetCellDesiredWidth(GridCellElement cell) { cell.Measure(new SizeF(float.PositiveInfinity, float.PositiveInfinity)); return cell.DesiredSize.Width; } private void Detach(IVirtualizedElementProvider<GridViewColumn> elementProvider, GridCellElement cell) { GridVirtualizedCellElement virtualizedCell = cell as GridVirtualizedCellElement; if (virtualizedCell != null) { elementProvider.CacheElement(virtualizedCell); virtualizedCell.Detach(); return; } cell.Dispose(); } private void Detach(IVirtualizedElementProvider<GridViewRowInfo> elementProvider, GridRowElement row) { GridVirtualizedRowElement virtualizedRоw = row as GridVirtualizedRowElement; if (virtualizedRоw != null) { elementProvider.CacheElement(virtualizedRоw); virtualizedRоw.Detach(); return; } row.Dispose(); } 
Completed
Last Updated: 31 Mar 2014 09:21 by ADMIN
ADMIN
Created by: Dess | Tech Support Engineer, Principal
Comments: 0
Category: GridView
Type: Bug Report
2
To reproduce: 
- add RadGridView and populate it manually with hierarchical data; 
- open one row child rows and select several child rows; 
- right click to open the context menu and select Copy; 
- paste in Notepad for example. As a result there is no pasted data. 

Workaround: 
radGridView1.ContextMenuOpening += radGridView1_ContextMenuOpening; 
string clipBoard = string.Empty;
RadGridView contextMenuInvoker;

void radGridView1_ContextMenuOpening(object sender, Telerik.WinControls.UI.ContextMenuOpeningEventArgs e) 
        {
            RadGridView grid = sender as RadGridView;
            if (grid.CurrentCell is GridDataCellElement || grid.CurrentCell is GridTableBodyElement)
            {
                if (grid.CurrentRow.ViewTemplate != grid.MasterGridViewTemplate && !(grid.CurrentCell.RowInfo is GridViewNewRowInfo))
                {
                    RadMenuItem itemCopy = new RadMenuItem();
                    itemCopy.Text = "Copy Row(s)";
                    itemCopy.Click += new EventHandler(itemCopy_Click);
                    e.ContextMenu.Items.RemoveAt(3);
                    e.ContextMenu.Items.Insert(3, itemCopy);
                    e.ContextMenu.Items.RemoveAt(4);
                }
                contextMenuInvoker = grid;
            }
        }

        void itemCopy_Click(object sender, EventArgs e)
        {
            CopyRows(contextMenuInvoker);
        }

        private void CopyRows(RadGridView radGridView)
        {
            StringBuilder sb = new StringBuilder();
            foreach (GridViewRowInfo row in radGridView.SelectedRows)
            {
                int i = 0;
                while (i < row.Cells.Count)
                {
                    if (i > 0)
                    {
                        sb.Append(",");
                    }
                    sb.Append(row.Cells[i].Value.ToString());
                    i++;
                }
                sb.AppendLine(";");
            }
            clipBoard = sb.ToString();
            Clipboard.SetDataObject(clipBoard);
        }
Completed
Last Updated: 31 Mar 2014 09:21 by ADMIN
ADMIN
Created by: Dess | Tech Support Engineer, Principal
Comments: 0
Category: GridView
Type: Bug Report
1
To reproduce: 1.Bind RadGridView to hierarchical data - no vertical scroll-bar is visible. 2.Select a certain row and expand the child template (click the expander) - vertical scroll-bar appears. 3.Scroll several rows downwards. 4.Click the expander to close the child template (the vertical scroll-bar should hide). As a result the selected row is changed.

Workaround: follow the approach below: GridViewHierarchyRowInfo row = null; bool keepParentRow = false; public Form1() { InitializeComponent(); } private void Form1_Load(object sender, EventArgs e) { this.productsTableAdapter.Fill(this.nwindDataSet.Products); this.categoriesTableAdapter.Fill(this.nwindDataSet.Categories); radGridView1.AutoGenerateHierarchy = true; radGridView1.DataSource = this.nwindDataSet; radGridView1.DataMember = "Categories"; radGridView1.CurrentRowChanging += radGridView1_CurrentRowChanging; radGridView1.ChildViewExpanded += radGridView1_ChildViewExpanded; radGridView1.MouseDown += radGridView1_MouseDown; } private void radGridView1_CurrentRowChanging(object sender, CurrentRowChangingEventArgs e) { RadGridView grid = sender as RadGridView; if (grid != null && row != null && keepParentRow) { e.Cancel = true; } } private void radGridView1_MouseDown(object sender, MouseEventArgs e) { RadGridView grid = sender as RadGridView; if (grid != null) { GridExpanderItem expander = grid.ElementTree.GetElementAtPoint(e.Location) as GridExpanderItem; if (expander != null && row != null) { keepParentRow = true; } else { keepParentRow = false; } } } private void radGridView1_ChildViewExpanded(object sender, Telerik.WinControls.UI.ChildViewExpandedEventArgs e) { RadGridView grid = sender as RadGridView; if (grid != null && e.IsExpanded == false) { row = e.ParentRow as GridViewHierarchyRowInfo; } }
Completed
Last Updated: 31 Mar 2014 09:20 by ADMIN
ADMIN
Created by: Dess | Tech Support Engineer, Principal
Comments: 0
Category: GridView
Type: Bug Report
0
To reproduce: 
-add RadDock with ToolWindow; 
-add RadGridView inside the ToolWindow; 
-apply Office2010Blue theme to the entire application; 
By default the GridDataCellElement has Font Segoe UI, 8.25pt with blue fore color. When the ToolWindow is floating, GridDataCellElement's font is changed to Microsoft Sans Serif, 8.25pt with black fore color.

Workaround: customize the theme by setting the appropriate font and fore color to the GridDataCellElement for the necessary element states.
Completed
Last Updated: 31 Mar 2014 09:18 by ADMIN
Description: hover the last row bottom border in such a way to display re-sizing cursor. Then move the cursor downwards. The problem occurs only when you have a few rows and move the cursor to the blank side of the grid view. To reproduce: -add RadGridView and use the following code: private void Form1_Load(object sender, EventArgs e) { this.customersTableAdapter.Fill(this.nwindDataSet.Customers); foreach (DataColumn column in this.nwindDataSet.Customers.Columns) { this.radGridView1.Columns.Add(column.ColumnName); } object[] row = this.nwindDataSet.Customers.Rows[0].ItemArray; this.radGridView1.Rows.Add(row); this.radGridView1.SelectedRows[0].IsSelected = false; this.radGridView1.CurrentCell.IsCurrent = false; this.radGridView1.CurrentRow.IsCurrent = false; } Workaround: public Form1() { InitializeComponent(); this.radGridView1.GridBehavior = new MyBaseBehavior(); } public class MyBaseBehavior : BaseGridBehavior { public override bool OnMouseMove(MouseEventArgs e) { GridRowElement currentRow = this.RowAtPoint; if (currentRow == null && e.Button == MouseButtons.None && Cursor.Current != Cursors.Default) { Cursor.Current = Cursors.Default; } return base.OnMouseMove(e); } }
Completed
Last Updated: 27 Mar 2014 14:26 by ADMIN
To reproduce:
1.Use the Self-Referencing Hierarchy help article to fill the grid with data.
2.Subscribe to the ChildViewExpanding event and use the following code snippet:
private void radGridView1_ChildViewExpanding(object sender, ChildViewExpandingEventArgs e)
{
    if (e.ParentRow.ChildRows != null && e.ParentRow.ChildRows.Count > 0)
    {
        e.ParentRow.ChildRows[0].Delete();
    }
}
Declined
Last Updated: 25 Mar 2014 16:14 by ADMIN
To reproduce:
void grid_RowValidating(object sender, RowValidatingEventArgs e)
{
    e.Cancel = true;
}

Pressing the escape key should cancel the edit mode and revert the value
Completed
Last Updated: 24 Mar 2014 12:41 by ADMIN
Steps to reproduce: 
1. expand a parent row
2. remove the first child row (e.g. 'Jon Smith') by selecting the child row and press the button at the top
3. remove the second (last) child row (in this case 'Pete van Dijk') the same way

Here is the code snippet:

public partial class Form1 : Form
{
    private List<Department> _departments;

    public Form1()
    {
        InitializeComponent();

        SetGridParentColumns();
        SetGridChildTemplate();

        InitData();

        grid.RowSourceNeeded += grid_RowSourceNeeded;
    }

    private void InitData()
    {
        _departments = new List<Department>(2);

        Department dep1 = new Department() { DepartmentId = 1, Name = "Accounting" };
        Department dep2 = new Department() { DepartmentId = 2, Name = "Finance" };

        Employee emp1 = new Employee() { DepartmentId = 1, EmployeeId = 1, FirsName = "John", LastName = "Smith" };
        Employee emp2 = new Employee() { DepartmentId = 1, EmployeeId = 2, FirsName = "Pete", LastName = "van Dijk" };
        Employee emp3 = new Employee() { DepartmentId = 2, EmployeeId = 3, FirsName = "Mark", LastName = "Smith" };
        Employee emp4 = new Employee() { DepartmentId = 2, EmployeeId = 4, FirsName = "Jan", LastName = "Janssen" };

        dep1.Employees = new List<Employee>() { emp1, emp2 };
        dep2.Employees = new List<Employee>() { emp3, emp4 };
        _departments.Add(dep1);
        _departments.Add(dep2);

        grid.DataSource = _departments;
        grid.AllowAddNewRow = false;
        grid.BestFitColumns();
    }

    private void SetGridParentColumns()
    {
        grid.AutoGenerateColumns = false;

        grid.Columns.Add("DepartmentId", "DepartmentId", "DepartmentId");
        grid.Columns.Add("Name", "Name", "Name");
    }

    private void SetGridChildTemplate()
    {
        grid.Templates.Clear();

        GridViewTemplate childTemplate = new GridViewTemplate();
        childTemplate.Columns.Add("EmployeeId");
        childTemplate.Columns.Add("DepartmentId");
        childTemplate.Columns.Add("FirstName");
        childTemplate.Columns.Add("LastName");
        grid.Templates.Add(childTemplate);
        childTemplate.HierarchyDataProvider = new GridViewEventDataProvider(childTemplate);
    }

    private void grid_RowSourceNeeded(object sender, GridViewRowSourceNeededEventArgs e)
    {
        Department dep = e.ParentRow.DataBoundItem as Department;

        foreach (Employee employee in dep.Employees)
        {
            GridViewRowInfo gridRow = e.Template.Rows.NewRow();
            gridRow.Cells["EmployeeId"].Value = employee.EmployeeId;
            gridRow.Cells["DepartmentId"].Value = employee.DepartmentId;
            gridRow.Cells["FirstName"].Value = employee.FirsName;
            gridRow.Cells["LastName"].Value = employee.LastName;
            e.SourceCollection.Add(gridRow);
        }

        e.Template.AllowAddNewRow = false;
        e.Template.BestFitColumns();
    }

    private void btnRemoveChildRow_Click(object sender, EventArgs e)
    {
        GridViewRowInfo row = grid.SelectedRows[0];
        if (row.ViewTemplate.Parent == null)
            return; //department (parent) row, so don't remove it

        int employeeId = Convert.ToInt32(row.Cells["EmployeeId"].Value);
        int departmentId = Convert.ToInt32(row.Cells["DepartmentId"].Value);
        Department dep = GetDepartment(departmentId);
        dep.RemoveEmployee(employeeId);

        row.ViewTemplate.Refresh();
    }

    private Department GetDepartment(int departmentId)
    {
        foreach (Department dep in _departments)
            if (dep.DepartmentId == departmentId)
                return dep;
        return null;
    }
}

public class Department
{
    public int DepartmentId { get; set; }

    public string Name { get; set; }

    public List<Employee> Employees { get; set; }

    public void RemoveEmployee(int employeeId)
    {
        Employee empToRemove = null;
        foreach (Employee emp in Employees)
        {
            if (emp.EmployeeId == employeeId)
            {
                empToRemove = emp;
                break;
            }
        }

        if (empToRemove != null)
            Employees.Remove(empToRemove);
    }
}

public class Employee
{
    public int DepartmentId { get; set; }

    public int EmployeeId { get; set; }

    public string FirsName { get; set; }

    public string LastName { get; set; }
}

Workaround: use the ViewInfo.Refresh method instead of the ViewTemplate.Refresh method
Completed
Last Updated: 21 Mar 2014 08:00 by ADMIN
To reproduce:
- Add MultiColumnComboBoxColumn to a blank grid.
- Subscribe to the SelectedIndexChanged event of the corresponding ActiveEditor (RadMultiColumnComboBoxElement).
- You will notice that when you select different cells the event is fired several times.
Declined
Last Updated: 20 Mar 2014 07:21 by ADMIN
To reproduce:

Add a RadGridView and bind it to a DataTable.

Subscribe to the TableElement's vertical scroll's ValueChanged event and add new data when the value reaches the maximum:

private void RequestData(int startFrom, int count) { for (int i = 0; i < count; i++) { DataRow row = dt.NewRow(); row["ID"] = startFrom + i; dt.Rows.Add(row); } } private void VScrollBar_ValueChanged(object sender, EventArgs e) { if (dgwData.TableElement.VScrollBar.Value + dgwData.TableElement.VScrollBar.LargeChange >= dgwData.TableElement.VScrollBar.Maximum) { int maxVScrollBarBefore = dgwData.TableElement.VScrollBar.Maximum; dgwData.SelectionChanged -= dgwData_SelectionChanged; dgwData.TableElement.VScrollBar.ValueChanged -= VScrollBar_ValueChanged; RequestData(dt.Rows.Count, rowsToCharge); dgwData.SelectionChanged += dgwData_SelectionChanged; dgwData.TableElement.VScrollBar.ValueChanged += VScrollBar_ValueChanged; } }

You will notice that when you use the mousewheel the scrollbar is being updated, but when you use the arrows it is not.

Workaround: Invoke the UpdateScrollRange method of the TableElement's RowScroller after adding the new data: dgwData.TableElement.RowScroller.UpdateScrollRange();
Completed
Last Updated: 18 Mar 2014 07:11 by ADMIN
To reproduce:
- Set the AutoSizeRows and PrintGrouping properties to true.
- Add a group descriptor and then call the PrintPreview method of the grid.

Workaround:
- Use the following classes to create custom print style:
public class MyGridPrintRenderer : TableViewDefinitionPrintRenderer
{
    private RadGridView gridView;

    public MyGridPrintRenderer(RadGridView grid) : base(grid)
    {
        gridView = grid;
    }

    protected override int GetDataRowHeight(GridViewRowInfo row, TableViewRowLayoutBase rowLayout)
    {
        IVirtualizedElementProvider<GridViewRowInfo> rowElementProvider = this.gridView.TableElement.RowScroller.ElementProvider;
        GridRowElement visualRow = rowElementProvider.GetElement(row, null) as GridRowElement;
        if (visualRow is GridGroupHeaderRowElement)
        {
            return rowLayout.GetRowHeight(row);
        }
        return base.GetDataRowHeight(row, rowLayout);
    }
}

public class MyGridPrintSyle : GridPrintStyle
{
    protected override BaseGridPrintRenderer InitializePrintRenderer(RadGridView grid)
    {
        if (this.PrintRenderer != null)
        {
            this.PrintRenderer.PrintCellPaint -= renderer_PrintCellPaint;
            this.PrintRenderer.PrintCellFormatting -= renderer_PrintCellFormatting;
        }

        MyGridPrintRenderer renderer = new MyGridPrintRenderer(grid);

        renderer.PrintCellFormatting += renderer_PrintCellFormatting;
        renderer.PrintCellPaint += renderer_PrintCellPaint;

        return renderer;
    }

    private void renderer_PrintCellPaint(object sender, PrintCellPaintEventArgs e)
    {
        this.OnPrintCellPaint(sender, e);
    }

    private void renderer_PrintCellFormatting(object sender, PrintCellFormattingEventArgs e)
    {
        this.OnPrintCellFormatting(sender, e);
    }
}
Completed
Last Updated: 14 Mar 2014 06:32 by ADMIN
To reproduce:
Add a RadGridView with a ComboBoxColumn, add a datasource, use the following code on CellEditorInitializedEvent:
void GridView_CellEditorInitialized(object sender, GridViewCellEventArgs e)
{
    GridViewComboBoxColumn column = e.Column as GridViewComboBoxColumn;
    if (column != null)
    {
        RadDropDownListEditor editor = e.ActiveEditor as RadDropDownListEditor;
        if (editor != null)
        {
            RadDropDownListEditorElement editorElement = editor.EditorElement as RadDropDownListEditorElement;
            if (editorElement != null)
            {
                editorElement.AutoCompleteMode = AutoCompleteMode.SuggestAppend;
            }
        }
    }
}

Run the project, select a value from one of the dropdowns, start editing, press backspace, press the key which corresponds to the deleted character, for example if the last character was '2', press the key '2'. You will notice that the key will be ignored.

Workaround:

void GridView_CellEditorInitialized(object sender, GridViewCellEventArgs e)
{
    GridViewComboBoxColumn column = e.Column as GridViewComboBoxColumn;
    if (column != null)
    {
        RadDropDownListEditor editor = e.ActiveEditor as RadDropDownListEditor;
        if (editor != null)
        {
            RadDropDownListEditorElement editorElement = editor.EditorElement as RadDropDownListEditorElement;
            editorElement.TextBox.KeyPress -= TextBox_KeyPress;
            editorElement.TextBox.KeyPress += TextBox_KeyPress;
            if (editorElement != null)
            {
                editorElement.AutoCompleteMode = AutoCompleteMode.SuggestAppend;
            }
        }
    }
}

private MethodInfo baseMethod = null;

void TextBox_KeyPress(object sender, KeyPressEventArgs e)
{
    if (char.IsLetterOrDigit(e.KeyChar))
    {
        RadDropDownListEditorElement editorElement = ((this.GridView.ActiveEditor as RadDropDownListEditor).EditorElement as RadDropDownListEditorElement);
        MethodInfo method = baseMethod == null ? 
            baseMethod = typeof(AutoCompleteAppendHelper).GetMethod("SetEditableElementText", 
            System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Instance)
            : baseMethod;

        InvokeNotOverride(method, editorElement.AutoCompleteAppend, editorElement.AutoCompleteAppend.FindShortestString(editorElement.Text + e.KeyChar));
        editorElement.TextBox.TextBoxItem.TextBoxControl.SelectionStart = editorElement.Text.Length;
    }
}

public object InvokeNotOverride(MethodInfo methodInfo,
                object targetObject, params object[] arguments)
{
    var parameters = methodInfo.GetParameters();

    if (parameters.Length == 0)
    {
        if (arguments != null && arguments.Length != 0)
            throw new Exception("Arguments cont doesn't match");
    }
    else if (parameters.Length != arguments.Length)
    {
        throw new Exception("Arguments cont doesn't match");
    }

    Type returnType = null;
    if (methodInfo.ReturnType != typeof(void))
    {
        returnType = methodInfo.ReturnType;
    }

    var type = targetObject.GetType();
    var dynamicMethod = new DynamicMethod("", returnType,
            new Type[] { type, typeof(Object) }, type);

    var iLGenerator = dynamicMethod.GetILGenerator();
    iLGenerator.Emit(OpCodes.Ldarg_0);

    for (var i = 0; i < parameters.Length; i++)
    {
        var parameter = parameters[i];

        iLGenerator.Emit(OpCodes.Ldarg_1);

        iLGenerator.Emit(OpCodes.Ldc_I4_S, i);
        iLGenerator.Emit(OpCodes.Ldelem_Ref);

        var parameterType = parameter.ParameterType;
        if (parameterType.IsPrimitive)
        {
            iLGenerator.Emit(OpCodes.Unbox_Any, parameterType);
        }
        else
        {
            iLGenerator.Emit(OpCodes.Castclass, parameterType);
        }
    }

    iLGenerator.Emit(OpCodes.Call, methodInfo);
    iLGenerator.Emit(OpCodes.Ret);

    return dynamicMethod.Invoke(null, new object[] { targetObject, arguments });
}
Completed
Last Updated: 13 Mar 2014 10:54 by ADMIN
To reproduce:
Add a RadGridView wth a few columns ,add rows as a few rows should have increasingly long text. Right click on the header cell to show the context menu and click bestfit. You will notice that the size of the column is not correct

Workaround: void grid_MouseMove(object sender, MouseEventArgs e) { this.mouseLocation = e.Location; } private Point mouseLocation; private GridViewColumn currentColumn; void grid_ContextMenuOpening(object sender, ContextMenuOpeningEventArgs e) { if (this.grid.CurrentRow is GridViewHierarchyRowInfo) { RadItem bestFitItem = e.ContextMenu.Items.FirstOrDefault(x => x.Text == "Best Fit"); if (bestFitItem != null) { e.ContextMenu.Items.Remove(bestFitItem); } RadMenuItem newBestFitItem = new RadMenuItem { Text = "Best Fit" }; this.currentColumn = (this.grid.ElementTree.GetElementAtPoint(this.mouseLocation) as GridCellElement).ColumnInfo; newBestFitItem.Click += newBestFitItem_Click; e.ContextMenu.Items.Add(newBestFitItem); } } void newBestFitItem_Click(object sender, EventArgs e) { int highestWidth = this.GetHeightestWidthFromColumn(this.currentColumn); this.currentColumn.Width = highestWidth; } private int GetHeightestWidthFromColumn(GridViewColumn gridViewColumn) { int max = int.MinValue; Font cellFont = this.grid.TableElement.VisualRows[0].VisualCells[0].Font; for (int i = 0; i < this.grid.Rows.Count; i++) { int textWidth = TextRenderer.MeasureText(this.grid.Rows[i].Cells[gridViewColumn.Index].Value + "", cellFont).Width; if (max < textWidth) { max = textWidth; } } return max; }
Completed
Last Updated: 12 Mar 2014 13:32 by ADMIN
Add the ability to access the ColumnChooser opening in order to set its properties. Currently, every time when the user opens the ColumnChoser new instance is created and because of this its properties and events are no longer available. This feature will 

Resolution:
Add the ColumnChooserCreated event which access and  allow to customize the ColumnChooser. 

//subscribe to the event ColumnChooserCreated
this.radGridView1.ColumnChooserCreated += new ColumnChooserCreatedEventHandler(radGridView1_ColumnChooserCreated);
			
//customize the ColumnChooser
void radGridView1_ColumnChooserCreated(object sender, Telerik.WinControls.UI.ColumnChooserCreatedEventArgs e)
{
    e.ColumnChooser.ForeColor = Color.DarkGreen;
    e.ColumnChooser.Text = "My title";
    e.ColumnChooser.ColumnChooserControl.ColumnChooserElement.Font = this.Font;
    e.ColumnChooser.ColumnChooserControl.ColumnChooserElement.Text = "My text";
}
Completed
Last Updated: 12 Mar 2014 11:07 by ADMIN
To reproduce: - Subscribe to the grids KeyDown event. - You will notice that KeyDown event is not fired when the control key is pressed. 

Workaround: - Use the KeyUp event instead. - Also setting the ClipboardCopyMode property to disabled will activate the event for this case. 
Completed
Last Updated: 07 Mar 2014 07:24 by ADMIN
The row's MaxHeight property does not affect the row sizing when the AutoSizeRows property of RadGridView is enabled.

Workaround:
Use the following data row:

public class MyGridDataRowElement : GridDataRowElement
{
protected override Type ThemeEffectiveType
{
get
{
return typeof(GridDataRowElement);
}
}
protected override System.Drawing.SizeF MeasureCore(System.Drawing.SizeF availableSize)
{
float maxHeight = this.RowInfo.MaxHeight;
bool isAutoSize = this.GridViewElement.AutoSize && this.RowInfo.MaxHeight > 0 && availableSize.Height == float.PositiveInfinity;
SizeF size = base.MeasureCore(availableSize);

if (isAutoSize && size.Height > maxHeight)
{
availableSize.Height = maxHeight;
size = base.MeasureCore(availableSize);
}

return size;
}
}

here is how to replace it and set the max height:
void radGridView1_RowFormatting(object sender, RowFormattingEventArgs e)
{
e.RowElement.RowInfo.MaxHeight = 32;
}

void radGridView1_CreateRow(object sender, GridViewCreateRowEventArgs e)
{
if (e.RowType == typeof(GridDataRowElement))
{
e.RowType = typeof(MyGridDataRowElement);
}
}
Completed
Last Updated: 03 Mar 2014 08:13 by Jesse Dyck
ADMIN
Created by: Julian Benkov
Comments: 1
Category: GridView
Type: Bug Report
7
Description: Just use the button x times to show an additional form with a RadGridView Control on it. RadGridView is not releasing the complete allocated memory. JustTrace shows an increasing number of Telerik.WinControls.RadPropertyValue instances. 

Resolution: Not a memory leak. When a form is shown with the ShowDialog method, it should be explicitly disposed. If the form was shown using the Show method, the Dispose method does not need to be called explicitly. It will be called automatically when the form is closed. Source: MSDN http://msdn.microsoft.com/en-us/library/aw58wzka%28v=vs.110%29.aspx
Completed
Last Updated: 28 Feb 2014 11:53 by ADMIN
ADMIN
Created by: Dess | Tech Support Engineer, Principal
Comments: 0
Category: GridView
Type: Bug Report
0
To reproduce:
- add a RadGridView with one column - GridViewMultiComboBoxColumn;
- set DataSource property of the column;
- subscribe to the CellValidating and use the following code:

 private void radGridView1_CellValidating(object sender, CellValidatingEventArgs e)
        {
            e.Cancel = true;
        }

Run the application and select a value from the GridViewMultiComboBoxColumn. When pressing Enter key, InvalidCastException is thrown.

Workaround: 

radGridView1.EditorManager.CloseEditorWhenValidationFails = true;
Completed
Last Updated: 26 Feb 2014 12:08 by ADMIN
has no user validation, exception when the type of parent and child keys is different
Completed
Last Updated: 24 Feb 2014 10:53 by ADMIN
ADMIN
Created by: Georgi
Comments: 0
Category: GridView
Type: Feature Request
10
When columns are reorder by the user RadGridView should persist these settings through the Save/LoadLayout routines.