Completed
Last Updated: 22 Aug 2019 13:22 by ADMIN
To reproduce: run the attached project and toggle the checkbox in the header cell of the child template. 

Workaround: use a custom GridCheckBoxHeaderCellElement


    public partial class RadForm1 : Telerik.WinControls.UI.RadForm
    {
        public RadForm1()
        {
            InitializeComponent();

            this.radGridView1.CreateCell += radGridView1_CreateCell;

            DataTable dt = new DataTable();
            dt.Columns.Add("CategoryId", typeof(int));
            dt.Columns.Add("CategoryName", typeof(string));
            dt.Columns.Add("ParentCategoryId", typeof(int));

            dt.Rows.Add(1, "Category1", 0);
            dt.Rows.Add(2, "Category2", 0);
            dt.Rows.Add(3, "Category3", 0);

            Random rand = new Random();
            for (int i = 4; i < 20; i++)
            {
                dt.Rows.Add(i, "Category" + i, rand.Next(1, 4));
            }
            this.radGridView1.Relations.AddSelfReference(this.radGridView1.MasterTemplate, "CategoryId", "ParentCategoryId");
            this.radGridView1.DataSource = dt;
            this.radGridView1.AutoSizeColumnsMode = Telerik.WinControls.UI.GridViewAutoSizeColumnsMode.Fill;

            GridViewTemplate childTemplate = CreateChildTemplate();
            GridViewRelation relation = new GridViewRelation(
                this.radGridView1.MasterTemplate,
                childTemplate);
            relation.ChildColumnNames.Add("CategoryId");
            relation.ParentColumnNames.Add("CategoryId");
            this.radGridView1.Relations.Add(relation);
        }

        private void radGridView1_CreateCell(object sender, GridViewCreateCellEventArgs e)
        {
            if (e.CellType == typeof(GridCheckBoxHeaderCellElement))
            {
                e.CellElement = new CustomGridCheckBoxHeaderCellElement(e.Column, e.Row);
            }
        }

        private GridViewTemplate CreateChildTemplate()
        {
            GridViewTemplate childTemplate = new GridViewTemplate();
            childTemplate.AutoGenerateColumns = false;
            this.radGridView1.Templates.Add(childTemplate);

            GridViewDecimalColumn decColumn = new GridViewDecimalColumn
            {
                Name = "CategoryId",
                HeaderText = "CategoryId Id",
                FieldName = "CategoryId",
                IsVisible = false,
                MinWidth = 100
            };
            childTemplate.Columns.Add(decColumn);

            GridViewTextBoxColumn tbxColumn = new GridViewTextBoxColumn
            {
                Name = "RightName",
                HeaderText = "Right Name",
                FieldName = "RGT_NAME",
                ReadOnly = true,
                MinWidth = 100
            };
            childTemplate.Columns.Add(tbxColumn);

            GridViewCheckBoxColumn chkxColumn = new GridViewCheckBoxColumn
            {
                Name = "Checkbox",
                EnableHeaderCheckBox = true,
                FieldName = "HasAccess",
            };
            childTemplate.Columns.Add(chkxColumn);
            childTemplate.AutoSizeColumnsMode = GridViewAutoSizeColumnsMode.Fill;
            return childTemplate;
        }

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

            public bool SuspendProcessingToggleStateChanged
            {
                get
                {
                    FieldInfo fi = typeof(GridCheckBoxHeaderCellElement).GetField("suspendProcessingToggleStateChanged", BindingFlags.NonPublic | BindingFlags.Instance);
                    return (bool)fi.GetValue(this);
                }
                set
                {
                    FieldInfo fi = typeof(GridCheckBoxHeaderCellElement).GetField("suspendProcessingToggleStateChanged", BindingFlags.NonPublic | BindingFlags.Instance);
                    fi.SetValue(this, value);
                }
            }

            public bool ShouldCheckDataRows
            {
                get
                {
                    FieldInfo fi = typeof(GridCheckBoxHeaderCellElement).GetField("shouldCheckDataRows", BindingFlags.NonPublic | BindingFlags.Instance);
                    return (bool)fi.GetValue(this);
                }
                set
                {
                    FieldInfo fi = typeof(GridCheckBoxHeaderCellElement).GetField("shouldCheckDataRows", BindingFlags.NonPublic | BindingFlags.Instance);
                    fi.SetValue(this, value);
                }
            }

            protected override void checkbox_ToggleStateChanged(object sender, StateChangedEventArgs args)
            {
                if (SuspendProcessingToggleStateChanged)
                {
                    return;
                }

                if (this.ViewTemplate != null && !this.ViewTemplate.IsSelfReference && !this.MasterTemplate.IsSelfReference)
                {
                    this.MasterTemplate.BeginUpdate();
                }
                else
                {
                    this.TableElement.BeginUpdate();
                }

                object valueState = DBNull.Value;

                if (args.ToggleState == ToggleState.On)
                {
                    valueState = true;
                }
                else if (args.ToggleState == ToggleState.Off)
                {
                    valueState = false;
                }
                else if (args.ToggleState == ToggleState.Indeterminate)
                {
                    valueState = null;
                }

                RaiseToggleStateEvent();

                if (!ShouldCheckDataRows)
                {
                    if (this.ViewTemplate != null && !this.ViewTemplate.IsSelfReference && !this.MasterTemplate.IsSelfReference)
                    {
                        this.MasterTemplate.EndUpdate(true, new DataViewChangedEventArgs(ViewChangedAction.DataChanged));
                    }

                    return;
                }

                this.GridViewElement.EditorManager.EndEdit();

                this.TableElement.BeginUpdate();
                this.MasterTemplate.MasterViewInfo.TableSearchRow.SuspendSearch();
                List<GridViewRowInfo> list = GetRowsToIterateOver();
                foreach (GridViewRowInfo rowInfo in list)
                {
                    GridViewGroupRowInfo groupRow = rowInfo as GridViewGroupRowInfo;

                    if (groupRow != null)
                    {
                        this.CheckAllCheckBoxInChildRows(groupRow, valueState);
                    }
                    else
                    {
                        rowInfo.Cells[this.ColumnIndex].Value = valueState;
                    }
                }
                this.MasterTemplate.MasterViewInfo.TableSearchRow.ResumeSearch();
                this.TableElement.EndUpdate(false);

                if (this.ViewTemplate != null && !this.ViewTemplate.IsSelfReference && !this.MasterTemplate.IsSelfReference)
                {
                    this.MasterTemplate.EndUpdate(true, new DataViewChangedEventArgs(ViewChangedAction.DataChanged));
                }
                else
                {
                    this.TableElement.EndUpdate(false);
                }

                this.TableElement.Update(GridUINotifyAction.DataChanged);
            }

            private void CheckAllCheckBoxInChildRows(GridViewGroupRowInfo row, object state)
            {
                List<GridViewRowInfo> list = new List<GridViewRowInfo>();

                foreach (GridViewRowInfo rowInfo in row.ChildRows)
                {
                    list.Add(rowInfo);
                }

                foreach (GridViewRowInfo rowInfo in list)
                {
                    GridViewGroupRowInfo groupInfo = rowInfo as GridViewGroupRowInfo;
                    if (groupInfo != null)
                    {
                        this.CheckAllCheckBoxInChildRows(groupInfo, state);
                    }
                    else
                    {
                        rowInfo.Cells[this.ColumnIndex].Value = state;
                    }
                }
            }

            private List<GridViewRowInfo> GetRowsToIterateOver()
            {
                if (this.ViewTemplate != null && this.ViewTemplate.IsSelfReference)
                {
                    PrintGridTraverser traverser = new PrintGridTraverser(this.ViewInfo);
                    List<GridViewRowInfo> result = new List<GridViewRowInfo>();

                    while (traverser.MoveNext())
                    {
                        if (traverser.Current is GridViewDataRowInfo)
                        {
                            result.Add(traverser.Current);
                        }
                    }

                    return result;
                }

                return new List<GridViewRowInfo>(this.ViewInfo.Rows);
            }
        }
    }
Completed
Last Updated: 17 Jul 2019 07:33 by ADMIN
Release R3 2019 (LIB 2019.2.722)
Completed
Last Updated: 15 Jul 2019 08:33 by ADMIN
Release R3 2019 (LIB 2019.2.722)
Created by: Daniel
Comments: 1
Category: GridView
Type: Bug Report
6

Steps to reproduce:

  1. Click column header to sort.
  2. Click button which to export to Excel.
  3. The rows return to unsorted.
  4. Scroll down slightly and scroll back up and the sort is restored.

This happens after calling RunExport.

I attached a gif and a sample project.

Completed
Last Updated: 01 Jul 2019 15:04 by ADMIN
Release R3 2019 (LIB 2019.2.708)

UI for WinForms R2 2019 SP1 (version 2019.2.618)

June 19, 2019

RadGridView

NEW
  • New property inside GridViewSearchRowInfo: DeferredSearch. Gets or sets a value indicating whether grid will wait until enter key is pressed before it starts a search.

 

 

I have implemented this and it is exactly what I want and need, Thank you! 
However I thought I might point out that when you tab out it doesn't implement the search, only when you press enter.

And when you press the X to clear the search it clears the text box but not the search. the count of found and the highlighted finds remain 

Completed
Last Updated: 28 Jun 2019 08:50 by ADMIN
Release R2 2019 SP1
Created by: Sasa
Comments: 2
Category: GridView
Type: Bug Report
1
RadGridView data source contains date values from years 2018 and 2019. After adding Excel like filters to the RadGridView and selecting year 2019 no rows were displayed, even though some values did match the filter condition (see attachment).
Completed
Last Updated: 06 Jun 2019 13:44 by ADMIN
Release R2 2019 SP1 (LIB 2019.2.610)
Created by: Comparto
Comments: 1
Category: GridView
Type: Feature Request
1
Add deferred search like in WPF suite
Completed
Last Updated: 06 Jun 2019 13:28 by ADMIN
Release R2 2019 SP1 (LIB 2019.2.610)
Created by: James
Comments: 1
Category: GridView
Type: Bug Report
1

To reproduce:

- Set the AutoSize to true

- Add GroupDescriptor

- An InvalidOperationException is thrown

Completed
Last Updated: 06 Jun 2019 13:25 by ADMIN
Release R2 2019 SP1 (LIB 2019.2.610)
To reproduce:

Sub New()
     
    InitializeComponent()

    Dim dt1 As New DataTable
    dt1.Columns.Add("Id", GetType(Integer))
    dt1.Columns.Add("Name", GetType(String))
    For index = 1 To 20
        dt1.Rows.Add(index, "Parent" & index)
    Next
    Me.RadGridView1.MasterTemplate.DataSource = dt1
    Me.RadGridView1.AutoSizeColumnsMode = GridViewAutoSizeColumnsMode.Fill

    Dim dt2 As New DataTable
    dt2.Columns.Add("Id", GetType(Integer))
    dt2.Columns.Add("Name", GetType(String))
    dt2.Columns.Add("ParentId", GetType(Integer))

    Dim dt3 As New DataTable
    dt3.Columns.Add("Id", GetType(Integer))
    dt3.Columns.Add("Name", GetType(String))
    dt3.Columns.Add("ParentId", GetType(Integer))
    For index = 1 To 20
        If index Mod 2 = 0 Then
            dt2.Rows.Add(index, "Child1." & index, index)
            If index Mod 4 = 0 Then
                dt3.Rows.Add(index, "Child2." & index, index)
            End If
        ElseIf index Mod 3 = 0 Then
            dt3.Rows.Add(index, "Child2." & index, index)
        Else
            dt3.Rows.Add(index, "Child2." & index, index)
        End If

    Next

    Dim template As New GridViewTemplate()
    template.DataSource = dt2
    template.AutoSizeColumnsMode = GridViewAutoSizeColumnsMode.Fill
    RadGridView1.MasterTemplate.Templates.Add(template)

    Dim relation As New GridViewRelation(RadGridView1.MasterTemplate)
    relation.ChildTemplate = template
    relation.RelationName = "FirstChild"
    relation.ParentColumnNames.Add("Id")
    relation.ChildColumnNames.Add("ParentId")
    RadGridView1.Relations.Add(relation)

    Dim template2 As New GridViewTemplate()
    template2.DataSource = dt3
    template2.AutoSizeColumnsMode = GridViewAutoSizeColumnsMode.Fill
    RadGridView1.MasterTemplate.Templates.Add(template2)

    Dim relation2 As New GridViewRelation(RadGridView1.MasterTemplate)
    relation2.ChildTemplate = template2
    relation2.RelationName = "SecondChild"
    relation2.ParentColumnNames.Add("Id")
    relation2.ChildColumnNames.Add("ParentId")
    RadGridView1.Relations.Add(relation2)

    AddHandler Me.RadGridView1.ChildViewExpanding, AddressOf ChildViewExpanding
End Sub

Private Sub RadGridView1_ViewCellFormatting(sender As Object, e As Telerik.WinControls.UI.CellFormattingEventArgs) _
Handles RadGridView1.ViewCellFormatting
    Dim cell As GridDetailViewCellElement = TryCast(e.CellElement, GridDetailViewCellElement)
    Dim expanderCell As GridGroupExpanderCellElement = TryCast(e.CellElement, GridGroupExpanderCellElement)
    If expanderCell IsNot Nothing AndAlso TypeOf e.CellElement.RowElement Is GridDataRowElement Then
        Dim hierarchyRow As GridViewHierarchyRowInfo = DirectCast(expanderCell.RowInfo, GridViewHierarchyRowInfo)
        If Not IsExpandable(hierarchyRow) Then
            expanderCell.Expander.Visibility = Telerik.WinControls.ElementVisibility.Hidden
        Else
            expanderCell.Expander.Visibility = Telerik.WinControls.ElementVisibility.Visible
        End If
    ElseIf cell IsNot Nothing Then
        Dim hierarchyRow As GridViewHierarchyRowInfo = DirectCast(DirectCast(cell.RowInfo, GridViewDetailsRowInfo).Owner,  _
        GridViewHierarchyRowInfo)
        For i As Integer = 0 To cell.PageViewElement.Items.Count - 1
            Dim item As RadPageViewItem = cell.PageViewElement.Items(i)
            Dim viewInfo As GridViewInfo = hierarchyRow.Views(i)
            item.Text = "Child Template " & i
            If viewInfo.ChildRows.Count = 0 Then
                If i = 0 AndAlso i < cell.PageViewElement.Items.Count - 1 Then
                    cell.PageViewElement.Items(i + 1).IsSelected = True
                End If
                item.Visibility = Telerik.WinControls.ElementVisibility.Hidden
            Else
                item.Visibility = Telerik.WinControls.ElementVisibility.Visible
            End If
        Next
    End If
End Sub

Private Function IsExpandable(hierarchyRow As GridViewHierarchyRowInfo) As Boolean
    For Each view As GridViewInfo In hierarchyRow.Views
        If view.ChildRows.Count > 0 Then
            Return True
        End If
    Next
    Return False
End Function

Workaround:

AddHandler Me.RadGridView1.ChildViewExpanding, AddressOf RadGridView1_ChildViewExpanding 
AddHandler Me.RadGridView1.MouseDown, AddressOf RadGridView_MouseDown

Private Sub RadGridView1_ChildViewExpanding(sender As Object, e As ChildViewExpandingEventArgs)
    If lastClicked IsNot Nothing AndAlso e.ParentRow.Equals(lastClicked) Then
        e.Cancel = False
    Else
        e.Cancel = True
    End If

End Sub

Dim lastClicked As GridViewRowInfo

Private Sub RadGridView_MouseDown(sender As Object, e As MouseEventArgs)
    Dim expander As GridExpanderItem = TryCast(Me.RadGridView1.ElementTree.GetElementAtPoint(e.Location), GridExpanderItem)
    If expander IsNot Nothing Then
        lastClicked = DirectCast(expander.Parent, GridGroupExpanderCellElement).RowInfo 
    End If 
End Sub
Completed
Last Updated: 16 May 2019 08:57 by ADMIN
Release R1 2019
ADMIN
Created by: Dimitar
Comments: 0
Category: GridView
Type: Bug Report
1
To reproduce:
- Add a checkbox column and hide some of the cells.
- Change some values and then click on empty cell.
- Exception occurs in OnMouseDownLeft method (GridRowBeahvior class)

Workaround:

Hide the checkbox only.
Completed
Last Updated: 16 May 2019 08:56 by ADMIN
Release R1 2019
To reproduce:
1. Add a RadMultiColumnComboBox and populate it with data.
2. Set the DropDownStyle property of the control to DropDownList
3. Set the EditorControl.AllowSearchRow and the AutoSizeDropDownToBestFit properties to true .
4. When you open the drop down and try to use the search row (e.g. clicking over the arrow buttons), the drop down is closed.

Workaround: 
public partial class RadForm1 : Telerik.WinControls.UI.RadForm
{
    public RadForm1()
    {
        InitializeComponent();

        this.radMultiColumnComboBox1.EditorControl.AllowSearchRow = true;
        this.radMultiColumnComboBox1.DropDownStyle = Telerik.WinControls.RadDropDownStyle.DropDownList;
        this.radMultiColumnComboBox1.DropDownClosing += RadMultiColumnComboBox1_DropDownClosing;
    }

    private void RadMultiColumnComboBox1_DropDownClosing(object sender, RadPopupClosingEventArgs args)
    {
        Point position = this.radMultiColumnComboBox1.EditorControl.PointToClient(Cursor.Position);

        Telerik.WinControls.RadElement searchElement = this.radMultiColumnComboBox1.EditorControl.ElementTree.GetElementAtPoint(position);
        if (searchElement != null)
        {
            GridSearchCellElement parent = searchElement.FindAncestor<GridSearchCellElement>();
            if (parent != null)
            {
                args.Cancel = true;
            }
        }
    }
}
Completed
Last Updated: 16 May 2019 05:57 by ADMIN
Created by: Pieter
Comments: 1
Category: GridView
Type: Bug Report
0

Steps to reproduce:

  • Create a RadGridView
  • DataBind the grid to a DataView (it might also fail for other kinds of databinding or content)
  • For a column, call BestFit().
  • Remove that column from the grid.
  • Add the Grid to a parent form or control 
  • Make the form/control visible.

When the grid is loaded and displayed, a NullReferenceException will be thrown:


Message             : Object reference not set to an instance of an object.
Type                : System.NullReferenceException
Source              : Telerik.WinControls.GridView
Stack trace         : Telerik.WinControls.UI.BestFitHelper.SetColumnWidth(GridViewColumn column, Single desiredWidth)
                      Telerik.WinControls.UI.BestFitHelper.BestFitColumnCore(GridViewColumn column, BestFitColumnMode mode)
                      Telerik.WinControls.UI.BestFitHelper.ProcessRequests()
                      Telerik.WinControls.UI.RowsContainerElement.MeasureOverride(SizeF availableSize)
                      Telerik.WinControls.RadElement.MeasureCore(SizeF availableSize)
                      Telerik.WinControls.RadElement.Measure(SizeF availableSize)
                      Telerik.WinControls.UI.ScrollViewElement`1.MeasureViewElement(SizeF availableSize)
                      Telerik.WinControls.UI.ScrollViewElement`1.MeasureView(SizeF availableSize)
                      Telerik.WinControls.UI.ScrollViewElement`1.MeasureOverride(SizeF availableSize)
                      Telerik.WinControls.UI.GridTableElement.MeasureOverride(SizeF availableSize)
                      Telerik.WinControls.RadElement.MeasureCore(SizeF availableSize)
                      Telerik.WinControls.RadElement.Measure(SizeF availableSize)
                      Telerik.WinControls.Layouts.DockLayoutPanel.MeasureOverride(SizeF constraint)
                      Telerik.WinControls.RadElement.MeasureCore(SizeF availableSize)
                      Telerik.WinControls.RadElement.Measure(SizeF availableSize)
                      Telerik.WinControls.UI.LightVisualElement.MeasureElements(SizeF availableSize, SizeF clientSize, Padding borderThickness)
                      Telerik.WinControls.UI.LightVisualElement.MeasureOverride(SizeF availableSize)
                      Telerik.WinControls.RadElement.MeasureCore(SizeF availableSize)
                      Telerik.WinControls.RadElement.Measure(SizeF availableSize)
                      Telerik.WinControls.RootRadElement.MeasureOverride(SizeF availableSize)
                      Telerik.WinControls.RootRadElement.MeasureCore(SizeF availableSize)
                      Telerik.WinControls.RadElement.Measure(SizeF availableSize)
                      Telerik.WinControls.RadElementTree.PerformInnerLayout(Boolean performMeasure, Int32 x, Int32 y, Int32 width, Int32 height)
                      Telerik.WinControls.RadControl.OnLoad(Size desiredSize)
                      Telerik.WinControls.UI.RadGridView.OnLoad(Size desiredSize)
                      Telerik.WinControls.RadControl.LoadElementTree(Size desiredSize)
                      Telerik.WinControls.RadControl.OnCreateControl()
                      System.Windows.Forms.Control.CreateControl(Boolean fIgnoreVisible)
                      System.Windows.Forms.Control.CreateControl(Boolean fIgnoreVisible)
                      System.Windows.Forms.Control.CreateControl(Boolean fIgnoreVisible)
                      System.Windows.Forms.Control.CreateControl()
                      System.Windows.Forms.Control.SetVisibleCore(Boolean value)
                      Telerik.WinControls.UI.TabPanel.set_Visible(Boolean value)
                      Telerik.WinControls.UI.TabStripPanel.SetSelected(TabPanel tabPanel)
                      Telerik.WinControls.UI.TabStripPanel.UpdateTabSelection(Boolean updateFocus)
                      Telerik.WinControls.UI.Docking.DockTabStrip.UpdateTabSelection(Boolean updateFocus)
                      Telerik.WinControls.UI.Docking.ToolTabStrip.UpdateTabSelection(Boolean updateFocus)
                      Telerik.WinControls.UI.TabStripPanel.OnHandleCreated(EventArgs e)
                      System.Windows.Forms.Control.WmCreate(Message& m)
                      System.Windows.Forms.Control.WndProc(Message& m)
                      System.Windows.Forms.ScrollableControl.WndProc(Message& m)
                      Telerik.WinControls.RadControl.WndProc(Message& m)
                      Telerik.WinControls.UI.SplitPanel.WndProc(Message& m)
                      System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
                      System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
                      System.Windows.Forms.NativeWindow.DebuggableCallback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)


Completed
Last Updated: 02 May 2019 08:47 by ADMIN
Release R2 2019

Please run the attached sample project and try to expand a row. The following error occurs:

System.NullReferenceException was unhandled by user code
  HResult=-2147467261
  Message=Object reference not set to an instance of an object.
  Source=Telerik.WinControls.GridView
  StackTrace:
       at Telerik.WinControls.UI.GridDetailViewRowElement.Detach()
       at Telerik.WinControls.UI.GridRowElement.DisposeManagedResources()
       at Telerik.WinControls.DisposableObject.PerformDispose(Boolean disposing)
       at Telerik.WinControls.RadElement.PerformDispose(Boolean disposing)
       at Telerik.WinControls.DisposableObject.Dispose(Boolean disposing)
       at Telerik.WinControls.RadElement.DisposeChildren()
       at Telerik.WinControls.RadElement.PerformDispose(Boolean disposing)
       at Telerik.WinControls.DisposableObject.Dispose(Boolean disposing)
       at Telerik.WinControls.RadElement.DisposeChildren()
       at Telerik.WinControls.RadElement.PerformDispose(Boolean disposing)
       at Telerik.WinControls.DisposableObject.Dispose(Boolean disposing)
       at Telerik.WinControls.RadElement.DisposeChildren()
       at Telerik.WinControls.RadElement.PerformDispose(Boolean disposing)
       at Telerik.WinControls.DisposableObject.Dispose(Boolean disposing)
       at Telerik.WinControls.RadElement.DisposeChildren()
       at Telerik.WinControls.RadElement.PerformDispose(Boolean disposing)
       at Telerik.WinControls.DisposableObject.Dispose(Boolean disposing)
       at Telerik.WinControls.RadElement.DisposeChildren()
       at Telerik.WinControls.RadElement.PerformDispose(Boolean disposing)
       at Telerik.WinControls.DisposableObject.Dispose(Boolean disposing)
       at Telerik.WinControls.RadElement.DisposeChildren()
       at Telerik.WinControls.RadElement.PerformDispose(Boolean disposing)
       at Telerik.WinControls.DisposableObject.Dispose(Boolean disposing)
       at Telerik.WinControls.ComponentThemableElementTree.Dispose(Boolean disposing)
       at Telerik.WinControls.RadControl.Dispose(Boolean disposing)
       at Telerik.WinControls.UI.RadGridView.Dispose(Boolean disposing)
       at System.ComponentModel.Component.Dispose()
       at System.Windows.Forms.Control.Dispose(Boolean disposing)
       at System.Windows.Forms.Form.Dispose(Boolean disposing)
       at Telerik.WinControls.UI.RadFormControlBase.Dispose(Boolean disposing)
       at Telerik.WinControls.UI.RadForm.Dispose(Boolean disposing)
       at _1401918_GridHierarchyPageViewMode.RadForm1.Dispose(Boolean disposing) in d:\Projects\1401918 GridHierarchyPageViewMode\RadForm1.Designer.cs:line 20
       at System.ComponentModel.Component.Dispose()
       at System.Windows.Forms.ApplicationContext.Dispose(Boolean disposing)
       at System.Windows.Forms.Application.ThreadContext.DisposeThreadWindows()
  InnerException: 

Completed
Last Updated: 10 Apr 2019 15:26 by Dimitar
Release R2 2019 (LIB 2019.1.415)

The function OnNotifyPropertyChanged(string propertyName) in RadGridView.cs does not call the base function of RadControl.

RadGridView.cs

        protected override void OnNotifyPropertyChanged(string propertyName)
        {
            if (propertyName == "AutoSize")
            {
                if (!this.AutoSize)
                {
                    this.RootElement.StretchHorizontally = true;
                    this.RootElement.StretchVertically = true;
                }
                else
                {
                    this.RootElement.StretchHorizontally = false;
                    this.RootElement.StretchVertically = false;
                }
            }
        }

 

RadControl.cs

        /// <summary>
        /// Raises the PropertyChanged event
        /// </summary>
        /// <param name="propertyName">The name of the property</param>
        protected virtual void OnNotifyPropertyChanged(string propertyName)
        {
            this.OnNotifyPropertyChanged(new PropertyChangedEventArgs(propertyName));
        }

        protected virtual void OnNotifyPropertyChanged(PropertyChangedEventArgs e)
        {
            PropertyChangedEventHandler handler1 =
                (PropertyChangedEventHandler)this.Events[RadControl.PropertyChangedEventKey];
            if (handler1 != null)
            {
                handler1(this, e);
            }
        }

 

Because of this i cannot do the following

RadGridView grid = new RadGridView();
grid.OnNotifyPropertyChanged("mypropertyname");

 

I currently work around this by doing the following

RadGridView grid = new RadGridView();
grid.OnNotifyPropertyChanged(new PropertyChangedEventArgs("mypropertyname"));

 

I need this functionality because i have a custom control which is derived from RadGridView and it has a custom property that requires databinding with INotifyPropertyChanged. I cannot implement this interface myself because the grid already does this.

I have checked this in both the 2018.1.220 and 2019.1.219 source.

Kind regards,

 

Edwin Dirkzwager
CIP Software

Completed
Last Updated: 02 Apr 2019 11:22 by ADMIN
Release R1 2019 (2019.1.117)
To reproduce: change the decimal separator to ",".

Please refer to the attached sample project and follow the steps from the attached gif file. 

Workaround: change the CurrentCulture in your application in order to affect the decimal separator:
Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture("en-GB");
            
Completed
Last Updated: 21 Mar 2019 17:46 by Dimitar
Use attached to reproduce.
Completed
Last Updated: 21 Mar 2019 15:08 by ADMIN
Release 2019.1.318 (03/18/2019)

When you start typing in the search text box some long text, not all key strokes will be handled. Please refer to the attached gifs file illustrating the behavior in the previous version and the latest release. 

Please refer to the attached sample project. Run the project and try typing "too long to type" in as your search.

Completed
Last Updated: 13 Mar 2019 16:21 by ADMIN
Release 2018.3.1016
How to reproduce: 
public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();

        ThemeResolutionService.AllowAnimations = false;
        this.radGridView1.DataSource = this.GetData();
    }

    private DataTable GetData()
    {
        DataTable dt = new DataTable();
        dt.Columns.Add("Id", typeof(int));
        dt.Columns.Add("Name", typeof(string));
        dt.Rows.Add(1, "\u0002x09");
        for (int i = 1; i < 10; i++)
        {
            dt.Rows.Add(i, "name");
        }

        return dt;
    }

    private void radButton1_Click(object sender, EventArgs e)
    {
        GridViewSpreadExport spreadExporter = new GridViewSpreadExport(this.radGridView1);
        spreadExporter.FileExportMode = FileExportMode.CreateOrOverrideFile;
        SpreadExportRenderer exportRenderer = new SpreadExportRenderer();
        spreadExporter.RunExport(@"..\..\exported-file.xlsx", exportRenderer);
    }
}

ArgumentException with clarification similar to  "'\u001f', hexadecimal value 0x1F, is an invalid character." is thrown when trying to export document containing characters which are not supported in XML document - such as some control characters like 0x00, 0x1F, 0x1B, etc. Such characters are described in the XML specification here: https://www.w3.org/TR/xml/#charsets.

Although the escaped strings are not supported (see  https://feedback.telerik.com/Project/184/Feedback/Details/190228 ), the library could prevent the exception and export the document successfully by skipping such characters.

Workaround: remove such characters before the export. Check the following StackOverflow answer for some ideas on code for replacing the characters: http://stackoverflow.com/a/14323524/259206
Completed
Last Updated: 13 Mar 2019 13:38 by ADMIN
Release 2019.1.117
How to reproduce: bind the grid using the code snippet below and enter name in the SearchRow
public partial class RadForm1 : Telerik.WinControls.UI.RadForm
{
    public RadForm1()
    {
        InitializeComponent();

        this.radGridView1.DataSource = this.GetData();
        this.radGridView1.AutoSizeColumnsMode = Telerik.WinControls.UI.GridViewAutoSizeColumnsMode.Fill;
        this.radGridView1.AllowSearchRow = true;

        this.radGridView1.MasterView.TableSearchRow.InitialSearchResultsTreshold = 0;
        this.radGridView1.MasterView.TableSearchRow.SearchResultsGroupSize = int.MaxValue;;
    }

    private DataTable GetData()
    {
        DataTable dt = new DataTable();
        dt.Columns.Add("Id", typeof(int));
        dt.Columns.Add("Name", typeof(string));
        dt.Columns.Add("Date", typeof(DateTime));
        dt.Columns.Add("Bool", typeof(bool));
        dt.Columns.Add("Description", typeof(string));
        for (int i = 0; i < 2000; i++)
        {
            for (int j = 0; j < 5; j++)
            {
                dt.Rows.Add(i, "Name " + j, DateTime.Now.AddDays(i), i % 2 == 0 , "Description " + i);
            }
        }

        return dt;
    }
}

Workaround: in the search row, set the InitialSearchResultsTreshold property to 0 and the SearchResultsGroupSize property to int.MaxValue
public RadForm1()
{
    InitializeComponent();

    this.radGridView1.DataSource = this.GetData();
    this.radGridView1.AutoSizeColumnsMode = Telerik.WinControls.UI.GridViewAutoSizeColumnsMode.Fill;
    this.radGridView1.AllowSearchRow = true;

    this.radGridView1.MasterView.TableSearchRow.SearchProgressChanged += TableSearchRow_SearchProgressChanged;
    this.radGridView1.MasterView.TableSearchRow.InitialSearchResultsTreshold = 0;
    this.radGridView1.MasterView.TableSearchRow.SearchResultsGroupSize = int.MaxValue;
}
Completed
Last Updated: 27 Feb 2019 08:40 by ADMIN
To reproduce: please refer to the attached sample project and follow the steps from the attached gif file.

1. Run the project and type "hana" in the second filter cell. You will notice that after a few seconds the input is handled and the grid is filtered.

Workaround: use RadVirtualGrid instead. 
https://docs.telerik.com/devtools/winforms/virtualgrid/overview
https://docs.telerik.com/devtools/winforms/virtualgrid/filtering/filtering

Second workaround: https://docs.telerik.com/devtools/winforms/gridview/filtering/how-to/filter-on-enter
Completed
Last Updated: 21 Feb 2019 05:42 by ADMIN
This was working this way in 2017 then we changer it so all rows are affected. 

Bot modes should be supported. 

1 2 3 4 5 6