Completed
Last Updated: 31 May 2013 09:32 by ADMIN
To reproduce, use the following code:
((GridViewMaskBoxColumn)radGridView1.Columns["MaskEditBoxColumn"]).DataType = typeof(decimal);
((GridViewMaskBoxColumn)radGridView1.Columns["MaskEditBoxColumn"]).FormatString = "{0:(###) ###-####}";
((GridViewMaskBoxColumn)radGridView1.Columns["MaskEditBoxColumn"]).MaskType = MaskType.Standard;
((GridViewMaskBoxColumn)radGridView1.Columns["MaskEditBoxColumn"]).Mask = "(###) ###-####";
((GridViewMaskBoxColumn)radGridView1.Columns["MaskEditBoxColumn"]).TextMaskFormat = MaskFormat.ExcludePromptAndLiterals;

and add a numeric value in one of the column cells. Result -> Exception has been thrown by the target of an invocation.

Workaround: Use a custom type converter:
((GridViewMaskBoxColumn)radGridView1.Columns["MaskEditBoxColumn"]).DataTypeConverter = new MyConverter();



        public class MyConverter : TypeConverter
        {
            public override bool CanConvertFrom(ITypeDescriptorContext context, Type sourceType)
            {
                return sourceType == typeof(string);
            }

            public override bool CanConvertTo(ITypeDescriptorContext context, Type destinationType)
            {
                if (destinationType == typeof(string))
                {
                    return true;
                }
                return base.CanConvertTo(context, destinationType);
            }

            public override object ConvertTo(ITypeDescriptorContext context, CultureInfo culture, object value, Type destinationType)
            {
                if (destinationType == typeof(string))
                {
                    string s = value.ToString();
                    s= s.Insert(0, "(");

                    if (value.ToString().Length > 3)
                    {
                       s= s.Insert(4, ")");
                    }

                    if (value.ToString().Length > 7)
                    {
                        s= s.Insert(8, "-");
                    }

                    return s;
                }

                return base.ConvertTo(context, culture, value, destinationType);
            }

            public override object ConvertFrom(ITypeDescriptorContext context, CultureInfo culture, object value)
            {
                string s = value.ToString();
                s = s.Replace("(", "");
                s = s.Replace(")", "");
                s = s.Replace("-", "");
                return Convert.ToDecimal(s);

            }
        }
Completed
Last Updated: 25 Jul 2014 07:53 by ADMIN
To reproduce set AddNewRowPosition is Bottom and the NewRowEnterKeyMode is EnterMovesToNextCell and add a new row via na UI

Workaround:
        void radGridView1_RowsChanged(object sender, GridViewCollectionChangedEventArgs e)
        {
            if (e.Action == NotifyCollectionChangedAction.Add && radGridView1.CurrentRow is GridViewNewRowInfo)
            {

            }
        }
Completed
Last Updated: 13 Oct 2014 09:35 by ADMIN
To reproduce:
- just subscribe to the event, sort the grid to fire it and check the property value

Wordaround:
((SortDescriptor)e.NewItems[0]).PropertyName
Completed
Last Updated: 29 May 2013 03:34 by ADMIN
Currently all export mechanisms export the first child view of a hierarchy row. There should be a mechanism to allow users to choose which view to be exported.
Completed
Last Updated: 29 Jun 2015 10:48 by ADMIN
Completed
Last Updated: 20 Feb 2014 15:09 by ADMIN
FIX. RadGridView - cursor does not work properly, when cursor has value "Cursors.SizeWE" and mouse is moving over GroupPanelElement.

Steps to reproduce:
1. On a gridview make sure that a column in grouped.
2. Place your mouse on a column split just below the grouped column.
3. The cursor icon changes to a SizeWE icon to let you know that you can resize the column, This is normal.
4. Now, move the mouse (with the cursor icon = SizeWE) to the grouped column just above.
5. Now the cusor gets stucked with this SizeWE icon and never goes away on this grid. Wathever you do now the icon stays showing as a SizeWE icon.

Work Around - create custom grid behavior and override OnMouseMove method.

    public class CustomGridBehavior : BaseGridBehavior 
    {
        public override bool OnMouseMove(MouseEventArgs e)
        {
             base.OnMouseMove(e);

             GridTableElement table = this.GetGridTableElementAtPoint(e.Location);

             if (table == null)
             {
                 this.GridViewElement.ElementTree.Control.Cursor = Cursors.Default;
                 return false;
             }

             return false;
        }
    }
Completed
Last Updated: 08 May 2013 07:13 by ADMIN
If one follows the guide from the online documentation to create custom summary cell element he will no be able to use it in a custom column:
http://www.telerik.com/help/winforms/gridview-cells-custom-cells.html

The issue is that the GetCellType method of the column is never called for summary rows.
Completed
Last Updated: 17 Nov 2015 16:27 by ADMIN
To reproduce: bind the grid to self reference data source, and on a button click, Fill the TableAdapter

Workaround: clear the relations to clear the cache and add them back after the adapter is filled:
RadGridView1.Relations.Clear()
        Me.Table1TableAdapter.Fill(Me.Database8DataSet.Table1)
        Me.RadGridView1.Relations.AddSelfReference(Me.RadGridView1.MasterTemplate, "TaskID", "ParentTask")
Completed
Last Updated: 05 Jun 2014 07:07 by Jesse Dyck
RadGrid's HierarchyRowTraverser throws an exception when all levels are expanded and filter is applied
Please, tests with the attached project.
Completed
Last Updated: 05 Jun 2014 07:08 by ADMIN
If your screen scaling is set to 125% the location of the editors that appear in the Composite Filter Form is not correct.
Completed
Last Updated: 25 Apr 2013 02:13 by ADMIN
To reproduce, use the following localization provider and set a fitler to a boolean column in RadGridView, via the Custom filtering dialog.

  class MyRadGridLocalizationProvider : RadGridLocalizationProvider
        {
            public const string CustomTrue = "CustomTRUE";
            public const string CustomFalse = "CustomFALSE";

            public override string GetLocalizedString(string id)
            {
                if (id == "CustomFilterDialogTrue")
                {
                    return CustomTrue;
                }
                else if (id == "CustomFilterDialogFalse")
                {
                    return CustomFalse;
                }
                else
                {
                    return base.GetLocalizedString(id);
                }
            }
        }

Workaround - create custom type converter as follows:
        public class MyBooleanConverter : BooleanConverter
        {
            public override object ConvertFrom(ITypeDescriptorContext context, System.Globalization.CultureInfo culture, object value)
            {
                if (value is string)
                {
                    string text = Convert.ToString(value);

                    if (text == MyRadGridLocalizationProvider.CustomTrue)
                    {
                        return true;
                    }
                    else if (text == MyRadGridLocalizationProvider.CustomFalse)
                    {
                        return false;
                    }
                }
                return base.ConvertFrom(context, culture, value);
            }
        }

and apply it to the check box column:
   radGridView1.Columns["BoolColumn"].DataTypeConverter = new MyBooleanConverter();
Unplanned
Last Updated: 15 Aug 2017 09:38 by ADMIN
One should be able to create a relation in order to produce the following hierarchy:
  public class MainObject
    {
        public ObservableCollection<LibraryObject> ListOfLibraryObjects { get; set; }
    }
    public class LibraryObject
    {
        public string LibraryName { get; set; }
        public TrajectoryManager TheTrajectoryManager { get; set; }
    }
    public class TrajectoryManager
    {
        public ObservableCollection<TrajectoryData> ListOfTrajectoryData { get; set; }
    }
    public class TrajectoryData
    {
        public string Name { get; set; }
    }

WORKAROUND:
    public class MainObject
    {
        public ObservableCollection<LibraryObject> ListOfLibraryObjects;
    }
    public class LibraryObject
    {
        public string LibraryName { get; set; }
        public ObservableCollection<TrajectoryData> ListOfTrajectoryData { get; set; }
    //    public TrajectoryManager TheTrajectoryManager;
    //}
    //public class TrajectoryManager
    //{
    //    public ObservableCollection<TrajectoryData> ListOfTrajectoryData;
    }
    public class TrajectoryData
    {
        public string Name { get; set; }
    }
Completed
Last Updated: 25 Aug 2015 09:42 by ADMIN
Steps to reproduce:
1. Add a grid to a form 
2. Add a self-reference hierarchy data and relation
3. Group the data on a column
Enter edit mode for a cell and directly click on the expand/collapse sign of a hierarchy row.
You will see that RadGridView does not behave correctly all the time.
Declined
Last Updated: 15 Sep 2015 13:21 by ADMIN
Deleting a Template in the Property Builder does work.
Completed
Last Updated: 22 Apr 2013 04:19 by ADMIN
Steps to reproduce:
1. Add a grid to a form and add two expression columns
2. Enable Excel-like filtering
3. Add data
4. Run the project and filter on both expression columns

You will see an exception.
Completed
Last Updated: 11 Feb 2014 15:54 by ADMIN
IMPROVE. RadGridView - add ability to change and customize the font (bold, italic, etc) in the ConditionalFormattingForm
Completed
Last Updated: 16 Feb 2017 15:22 by ADMIN
Currently, it is only possible to define two filter conditions in the Custom Filter Dialog. It would be better if there is possibility for adding multiple filter conditions, similar to the possibility given by the Conditional Formatting Dialog
Completed
Last Updated: 08 Oct 2014 07:15 by ADMIN
To reproduce:
Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
        BindGrid()
    End Sub

    Private Sub BindGrid()
        Dim r As New Random()
        Dim table As New DataTable()
        table.Columns.Add("ID", GetType(Integer))
        table.Columns.Add("Name", GetType(String))
        table.Columns.Add("Bool", GetType(Boolean))

        For i As Integer = 0 To 39
            table.Rows.Add(i, "Row " & i, If(r.[Next](10) > 5, True, False))
        Next

        Me.RadGridView1.DataSource = table
    End Sub

    Dim saveName As Integer

    Private Sub RadGridView1_CellEndEdit(sender As Object, e As Telerik.WinControls.UI.GridViewCellEventArgs) Handles RadGridView1.CellEndEdit
        If e.Column.Name = "Name" Then
            saveName = RadGridView1.CurrentRow.Cells("ID").Value
            BindGrid()
        End If
    End Sub

    Private Sub RadGridView1_DataBindingComplete(sender As Object, e As Telerik.WinControls.UI.GridViewBindingCompleteEventArgs) Handles RadGridView1.DataBindingComplete
        For Each row As GridViewRowInfo In RadGridView1.Rows
            If row.Cells("ID").Value = saveName Then
                row.IsCurrent = True
                RadGridView1.TableElement.EnsureRowVisible(row)
                Exit For
            End If
        Next
    End Sub
WORKAROUND:
Rebind the grid in the CellValueChanged event instead of the CellEndEdit event:

    Private Sub RadGridView1_CellValueChanged(sender As Object, e As Telerik.WinControls.UI.GridViewCellEventArgs) Handles RadGridView1.CellValueChanged
        If e.Column.Name = "Name" Then
            saveName = RadGridView1.CurrentRow.Cells("ID").Value
            BindGrid()
        End If
    End Sub
Declined
Last Updated: 12 Sep 2015 08:55 by ADMIN
1. Create a new project with RadGridView.
2. Bind it and set grouping.
3. Add a summary row and set ShowParentGroupSummaries property to true.
4. Handle the ViewCellFormatting event and set all summary rows to be IsVisible = false when the processed cell is GridSummaryCellElement:

void radGridView1_ViewCellFormatting(object sender, CellFormattingEventArgs e)
{
    if (e.CellElement is GridSummaryCellElement)
    {
        e.Row.IsVisible = false;
    }
}

CORRECT WAY TO HANDLE THIS CASE:
Hide the summary rows in the groups you want after grouping/data binding.
To hide the first bottom summary row of the first group in a RadGridView use the following code:
this.radGridView1.Groups[0].GroupRow.BottomSummaryRows[0].IsVisible = false;
Completed
Last Updated: 27 May 2015 08:07 by ADMIN
RadGridView - current row changes even when canceling the RowValidating event.

Code to reproduce:
            public Form1()
            {
                InitializeComponent();

                radGridView1.AutoGenerateColumns = false;
                radGridView1.AutoSizeColumnsMode = GridViewAutoSizeColumnsMode.Fill;

                radGridView1.Columns.Add(new GridViewTextBoxColumn("A", "A"));
                radGridView1.Columns.Add(new GridViewTextBoxColumn("B", "B"));
                radGridView1.Columns.Add(new GridViewTextBoxColumn("C", "C"));

                radGridView1.Rows.Add("A", "AA", "AAA");
                radGridView1.Rows.Add("B", "BB", "BBB");
                radGridView1.Rows.Add("C", "CC", "CCC");
                radGridView1.Rows.Add("D", "DD", "DDD");
                radGridView1.Rows.Add("E", "EE", "EEE");
                radGridView1.Rows.Add("F", "FF", "FFF");
                radGridView1.Rows.Add("G", "GG", "GGG");

                radGridView1.RowValidating += new RowValidatingEventHandler(radGridView1_RowValidating);

            }

            void radGridView1_RowValidating(object sender, RowValidatingEventArgs e)
            {
                if (e.Row.Cells["B"].Value.ToString() == "BB")
                {
                    e.Cancel = true;
                }
            }


Steps to reproduce: 

1. Go to cell with value "BB"
2. NOT in edit mode press down arrow key 2-3 times
3. Change text to "AA"
4. Press Tab several times

Work around: 
Use custom navigator:

radGridView1.GridViewElement.Navigator = new MyGridNavigator();


            public class MyGridNavigator : BaseGridNavigator
            {
                private static readonly FieldInfo EnumeratorFieldInfo = typeof(BaseGridNavigator).GetField("enumerator", BindingFlags.NonPublic | BindingFlags.Instance);

                protected GridTraverser enumerator
                {
                    get { return EnumeratorFieldInfo.GetValue(this) as GridTraverser; }
                }

                protected override bool SelectCore(GridViewRowInfo row, GridViewColumn column)
                {
                    bool result = base.SelectCore(row, column);

                    if (!result)
                    {
                        enumerator.GoToRow(this.GridViewElement.CurrentRow);
                    }

                    return result;
                }
            }