Pending Review
Last Updated: 19 Oct 2021 09:52 by Jakob

There are situations where SelectedRows won't return the number of rows preselected when using Begin/EndUpdate even though it seems like there's a row selected in the UI. By preselected I mean the row that looks selected after the rows has been added. This bug has caused some problems for us because the user tried some action on a row they thought was preselected and it would fail.

One situation I found where this bug can be reproducted is by using SortOrder in combination of Begin/EndUpdate. There are probably more situations but I hope this one will let you find the underlying bug.

The attached project contains a simple form with a RadGridView which will contain a list of persons. The list is populated by this method:

public void PopulateGridView(List<Person> persons)
{
	PersonGridView.BeginUpdate();
	PersonGridView.DataSource = persons;
	PersonGridView.EndUpdate();
	PersonGridView.Columns[nameof(Person.LastName)].SortOrder = RadSortOrder.Ascending;
}

There are two buttons: "Step one" and "Step two". The first will mimick a situation where the user search a database for persons and none will be found. By clicking the "Get selected rows" you will see that the SelectedRows will return zero rows which is correct.
But when you afterwards click "Step two" (which will add five rows) it seems like there's one row preselected. I would expect the SelectedRows to return that row but by clicking "Get selected rows" again you will see that the returned rows are zero still. The CurrentRow, however is set to the preselected row as expected.
If you start by clicking "Step two" the SelectedRows actually returns the correct rows. Quite strange :-)

I know this is a very small issue and can be avoided. But as I mentioned there are other situations where this problem occurs and it's quite hard to figure out exactly what causes it.

Thank you for your help.

Best regards
Ulrik Skovenborg

Unplanned
Last Updated: 19 Oct 2021 07:12 by ADMIN
Created by: Manolo
Comments: 0
Category: GridView
Type: Feature Request
0
The following problem occurs in most Telerik controls: when browsing the screen with tab key and the screen reader arrives at a Telerik control it says unnecessary information, the Name property, or the name of control. In this case, when I arrive at this radGridView, the screen reader says: "Telerik.WinControls.UI.RadGridView ; 4;3  Tabla"
Part by part:
- Telerik.WinControls.UI.RadGridView: it is very annoying to receive this information.
- 4;3: this information is very important due to the screen reader says the quantity of rows and columns has the grid.
- Tabla: this information is from the screen reader and the operating system which inform the control type I am browsing.

Testing other controls I have found more accessibility troubles, but I think that it would take too long for this email.
Unplanned
Last Updated: 19 Oct 2021 07:12 by ADMIN
When I add a GridViewComboBoxColumn, if I browse the grid and I arrive at GridViewComboBoxColumn, the screen reader reads the ValueMember data instead of the DisplayMember.
If I press F2 key and browse the ComboBox, the control works perfectly, better than the Microsoft Windows Forms ComboBox.
Completed
Last Updated: 08 Oct 2021 15:04 by ADMIN
Release R3 2021 SP1
Created by: Ben
Comments: 1
Category: GridView
Type: Bug Report
0

Hi There,

 

This call is only a nice to have, it is not critical at all. It is just a slight annoyance when building the Grid's columns - especially when there are many columns to adjust. My workflow is usually as follow. 

 

Add all the columns needed, then after that I will run through all the columns and want to set the widths. But my speed is broken because I can't tab between the 3 width properties: Width, Min Width, Max Width. I have to click to put focus the the next value.

 

If possible, please can you correct the tab indexes?

 

Thank you

Kind Regards

Ben

 

PS. You may close this ticket immediately - this is only a request.

Unplanned
Last Updated: 07 Oct 2021 10:12 by ADMIN
Created by: Ben
Comments: 0
Category: GridView
Type: Bug Report
1

Please run the attached sample project. The row's height in the print document is not adjusted according to the column's width in the print page. 

Workaround: 

Usually for such cases it is convenient to increase the column's width in order to reduce its height and thus it would be able to fit the print page's height. In addition to adjusting the column's width, feel free to use multi-page printing:

https://docs.telerik.com/devtools/winforms/controls/gridview/printing-support/gridprintstyle#multi-page-printing   

 

Declined
Last Updated: 06 Oct 2021 08:23 by ADMIN
To reproduce: please open the attached sample project and follow the steps illustrated in the attached gif file.

Workaround: 
1. You still can scroll while dragging a row by using the mouse wheel.

2. Use the grid in unbound mode and set the AllowRowReorder property to true instead of using a custom RadDragDropService.

3. Use a custom drag and drop service:

public class CustomDragDropService : RadGridViewDragDropService
{
    public CustomDragDropService(RadGridViewElement gridViewElement) : base(gridViewElement)
    {
    }

    public override string Name
    {
        get
        {
            return typeof(RadGridViewDragDropService).Name;
        }
    }

    protected override void HandleMouseMove(System.Drawing.Point mousePosition)
    {
        base.HandleMouseMove(mousePosition);
        System.Drawing.Point location = this.GridViewElement.ElementTree.Control.PointToClient(Control.MousePosition);
        GridTableElement tableElement = this.GetTableElementAtPoint(location);

        ISupportDrag supportDrag = this.Context as ISupportDrag;
        object dataContext = supportDrag.GetDataContext();

        if (this.AllowAutoScrollRowsWhileDragging && dataContext == null)
        {
            ScrollRows(tableElement, location);
        }
    }

    private void ScrollRows(GridTableElement tableElement, System.Drawing.Point location)
    {
        ScrollableRowsContainerElement scrollableRows = tableElement.ViewElement.ScrollableRows;
        RadScrollBarElement vScrollbar = GetVeritcalScrollbar(tableElement);
        System.Drawing.Rectangle containerBounds = scrollableRows.ControlBoundingRectangle;

        if (containerBounds.Contains(location) ||
            location.X < containerBounds.X ||
            location.X > containerBounds.Right)
        {
            return;
        }

        int delta = 0;

        if (location.Y > containerBounds.Bottom)
        {
            delta = location.Y - containerBounds.Bottom;
        }
        else if (location.Y < containerBounds.Y)
        {
            delta = location.Y - containerBounds.Y;
        }

        if (delta != 0 && vScrollbar.Visibility == ElementVisibility.Visible)
        {
            vScrollbar.Value = ClampValue(vScrollbar.Value + delta,
                vScrollbar.Minimum,
                vScrollbar.Maximum - vScrollbar.LargeChange + 1);
        }
    }

    private int ClampValue(int value, int minimum, int maximum)
    {
        if (value < minimum)
        {
            return minimum;
        }
        if (maximum > 0 && value > maximum)
        {
            return maximum;
        }
        return value;
    }

    private RadScrollBarElement GetVeritcalScrollbar(GridTableElement tableElement)
    {
        if (GridViewElement.UseScrollbarsInHierarchy)
        {
            return tableElement.VScrollBar;
        }
        return GridViewElement.TableElement.VScrollBar;
    }
}

public RadForm1()
{
    InitializeComponent();
    CustomDragDropService customService = new CustomDragDropService(radGridView1.GridViewElement);
    radGridView1.GridViewElement.RegisterService(customService);
}
Completed
Last Updated: 17 Sep 2021 13:52 by ADMIN
Release R2 2019 SP1
Add a new DeferredFilter property on RadGridView level which controls whether the filtering logic will be immediately preformed on each key stroke or only by pressing Enter.
In Development
Last Updated: 27 Aug 2021 07:10 by ADMIN
Scheduled for R3 2021

Steps to reproduce:

1. Bind the grid to BindingList

2. Call BestFitColumns method in form's constructor

3. Use Fluent/Crystal theme

4. Rebind the grid by setting DataSource=null

5. Exception is thrown

Stack trace:

en Telerik.WinControls.UI.BestFitHelper.SetColumnWidth(GridViewColumn column, Single desiredWidth)
   en Telerik.WinControls.UI.BestFitHelper.BestFitColumnCore(GridViewColumn column, BestFitColumnMode mode)
   en Telerik.WinControls.UI.BestFitHelper.ProcessRequests()
   en Telerik.WinControls.UI.GridTableElement.UpdateAll()
   en Telerik.WinControls.UI.GridTableElement.UpdateViewCore(Object sender, DataViewChangedEventArgs args)
   en Telerik.WinControls.UI.GridTableElement.UpdateView(Object sender, DataViewChangedEventArgs args)
   en Telerik.WinControls.UI.GridTableElement.ProcessTemplateEvent(GridViewEvent eventData)
   en Telerik.WinControls.UI.GridTableElement.Telerik.WinControls.UI.IGridViewEventListener.ProcessEvent(GridViewEvent eventData)
   en Telerik.WinControls.UI.GridViewEventProcessEntity.ProcessCollection(GridViewEvent gridEvent, PriorityWeakReferenceList list, GridEventProcessMode processMode)
   en Telerik.WinControls.UI.GridViewEventProcessEntity.ProcessEvent(GridViewEvent gridEvent)
   en Telerik.WinControls.UI.GridViewSynchronizationService.NotifyListeners(GridViewEvent gridEvent)
   en Telerik.WinControls.UI.GridViewSynchronizationService.FlushEvents()
   en Telerik.WinControls.UI.GridViewSynchronizationService.DispatchEvent(GridViewEvent gridEvent)
   en Telerik.WinControls.UI.GridViewSynchronizationService.DispatchEvent(GridViewTemplate template, GridViewEvent eventData, Boolean postUI)
   en Telerik.WinControls.UI.GridViewTemplate.DispatchEvent(GridViewEvent gridEvent, Boolean postUI)
   en Telerik.WinControls.UI.GridViewTemplate.DispatchDataViewChangedEvent(Object sender, DataViewChangedEventArgs args)
   en Telerik.WinControls.UI.GridViewTemplate.OnViewChanged(Object sender, DataViewChangedEventArgs e)
   en Telerik.WinControls.UI.MasterGridViewTemplate.OnViewChanged(Object sender, DataViewChangedEventArgs e)
   en Telerik.WinControls.UI.GridViewTemplate.CollectionView_CollectionChanged(Object sender, NotifyCollectionChangedEventArgs e)
   en Telerik.WinControls.Data.RadCollectionView`1.OnCollectionChanged(NotifyCollectionChangedEventArgs args)
   en Telerik.WinControls.Data.RadDataView`1.RebuildData(Boolean notify)
   en Telerik.WinControls.Data.RadDataView`1.RefreshOverride()
   en Telerik.WinControls.Data.RadDataView`1.ProcessCollectionChanged(NotifyCollectionChangedEventArgs args)
   en Telerik.WinControls.Data.RadCollectionView`1.source_CollectionChanged(Object sender, NotifyCollectionChangedEventArgs e)
   en Telerik.WinControls.Data.NotifyCollectionChangedEventHandler.Invoke(Object sender, NotifyCollectionChangedEventArgs e)
   en Telerik.WinControls.Data.RadListSource`1.OnCollectionChanged(NotifyCollectionChangedEventArgs e)
   en Telerik.WinControls.Data.RadListSource`1.EndUpdate(Boolean notifyUpdates)
   en Telerik.WinControls.Data.RadListSource`1.Initialize()
   en Telerik.WinControls.Data.RadListSource`1.Bind(Object dataSource, String dataMember)
   en Telerik.WinControls.Data.RadListSource`1.set_DataSource(Object value)
   en Telerik.WinControls.UI.GridViewTemplate.set_DataSource(Object value)
   en Telerik.WinControls.UI.RadGridView.set_DataSource(Object value)

Unplanned
Last Updated: 25 Aug 2021 07:54 by ADMIN
Created by: Roger
Comments: 3
Category: GridView
Type: Feature Request
4

I might be missing something, but I have Hyperlinks in a column in my RadDatGridView.

 

I tried searching for a Support document explaining this, but didn't find any.

 

When the grid is exported to excel all data is coming across, but the column with hyperlink is not

a hyperlink in Excel.

 

Below is sample of the code used to make the "HyperLink" column in my grid.

                radGridView1.DataSource = dtResults;
                radGridView1.Columns.Remove("Path");
                GridViewHyperlinkColumn col = new GridViewHyperlinkColumn();
                radGridView1.Columns.Insert(5, col);
                col.Width = 200;
                col.FieldName = "Path";
                col.HeaderText = "Path";
                col.Name = "Path";

 

Coded used to do the Export....

               GridViewSpreadExport spreadExporter = new GridViewSpreadExport(this.radGridView1);
                spreadExporter.ExportVisualSettings = true;
                SpreadExportRenderer exportRenderer = new SpreadExportRenderer();

                spreadExporter.RunExport(filename, exportRenderer);

 

Thanks.

 

Roger

Duplicated
Last Updated: 16 Aug 2021 11:00 by ADMIN
Rows auto-sizing is available for ColumnGroupsViewDefinition. Hence, it would be nice to have this functionality for the HtmlViewDefinition as well.
Completed
Last Updated: 05 Aug 2021 14:10 by ADMIN
Release R3 2021
  1. Filter the column "code" to show only "(Blanks)"
  2. Hit the "Save Layout" button to save the layout into a string
  3. Hit the "Load Layout" button. The row is gone
 
Completed
Last Updated: 02 Aug 2021 08:33 by ADMIN
Release R3 2021 (LIB 2021_2_802)
We're trying to apply a filter to data that may contain infinity values but it is not working.
Completed
Last Updated: 29 Jul 2021 07:05 by ADMIN
Release R3 2021
Add the option to set the EndEditOnLostFocus of BaseGridEditor.
Completed
Last Updated: 22 Jun 2021 17:34 by ADMIN
Release R3 2021
I have a RadGridView that has expandable rows. If I expand the row, start editing an editable cell and then, without committing the edit (by pressing enter or clicking away from the cell), collapse the row, the program crashes with roughly the following stack trace:


Stack Trace:
   at System.Collections.ArrayList.BinarySearch(Int32 index, Int32 count, Object value, IComparer comparer)
   at Telerik.WinControls.UI.TextBoxWrapPanel.BinarySearch(LineInfo line, IComparer comparer)
   at Telerik.WinControls.UI.TextBoxNavigator.GetPositionFromOffset(Int32 offset)
   at Telerik.WinControls.UI.RadTextBoxControlElement.Select(Int32 start, Int32 length)
   at Telerik.WinControls.UI.RadTextBoxControlEditor.EndEdit()
   at Telerik.WinControls.UI.GridViewEditManager.EndEditCore(Boolean validate, Boolean cancel)
   at Telerik.WinControls.UI.GridViewEditManager.CloseEditor()
Completed
Last Updated: 22 Jun 2021 17:27 by ADMIN
Release R3 2021

Use the following code snippet:

https://docs.telerik.com/devtools/winforms/styling-and-appearance/using-a-default-theme-for-the-entire-application#enabledisable-the-globally-set-theme-for-a-specific-control 

 

            ThemeResolutionService.ApplicationThemeName = "MaterialPink";
            radGridView1.ElementTree.EnableApplicationThemeName = false;
            radGridView1.ThemeName = "FluentDark";

Workaround:

        private void radGridView1_CellEditorInitialized(object sender, GridViewCellEventArgs e)
        {
            RadDropDownListEditor ddlEditor = e.ActiveEditor as  RadDropDownListEditor;
            if (ddlEditor != null)
            {
                RadDropDownListEditorElement el = ddlEditor.EditorElement as RadDropDownListEditorElement;
                el.Popup.ElementTree.EnableApplicationThemeName = false;
                el.Popup.ThemeName = this.radGridView1.ThemeName;
            }
        }

Declined
Last Updated: 14 Jun 2021 09:13 by ADMIN
  1. Using a RadGriditem
  2. Set AllowSearchRow to false as default
  3. Add a RadButton or something else to toggle AllowSearchRow
  4. Toggling works as long the "x" in the search mask is not used

When the "x" is used it seems that AllowSearchRow is not set to false because the toggle button has then to be pressed twice to show up the search mask again.

Completed
Last Updated: 11 Jun 2021 10:53 by ADMIN
Release R2 2021 SP1

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

Workaround: custom filtering to control which rows to be visible or not: https://docs.telerik.com/devtools/winforms/controls/gridview/filtering/custom-filtering 

        private void radGridView1_CustomFiltering(object sender, GridViewCustomFilteringEventArgs e)
        {
            e.Handled = true;
            e.Visible =  e.Row.Cells["Value"].Value.Equals( Double.NaN);
        }

Completed
Last Updated: 11 Jun 2021 10:52 by ADMIN
Release R2 2021 SP1

Please refer to the attached sample project and follow the steps from the grid file:

Steps to reproduce:
1. Filter the checkbox column to only show unchecked rows
2. Enter "5" for filtering the Name column
3. Click the checkbox column on the bottom row
4. Remove filter value in the Name column
This will result in the unrelated record showing as checked. Scrolling or changing sorting may refresh the cell. If the  filter is cleared by using the No filter menu option, the problem is not observed

Completed
Last Updated: 10 Jun 2021 13:10 by ADMIN
Release R2 2021 SP1

If you define which columns to be printed on separate pages and try to use the Print Settings dialog to change the orientation for example, the multi-page printing gets lost: 

https://docs.telerik.com/devtools/winforms/controls/gridview/printing-support/gridprintstyle#multi-page-printing

Here is the code snippet which result is illustrated in the attached gif file:

  
    Private Sub RadForm1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        Me.CustomersTableAdapter.Fill(Me.NwindDataSet.Customers)

        Me.RadGridView1.DataSource = Me.CustomersBindingSource
        Me.RadGridView1.BestFitColumns()
    End Sub

    Private Sub RadButton1_Click(sender As Object, e As EventArgs) Handles RadButton1.Click
 
        Dim document As New RadPrintDocument()
        document.AssociatedObject = Me.RadGridView1

        Dim printStyle As GridPrintStyle = New GridPrintStyle(RadGridView1)
        Dim renderer As TableViewDefinitionPrintRenderer = New TableViewDefinitionPrintRenderer(RadGridView1)
        renderer.PrintPages.Add(RadGridView1.Columns(0), RadGridView1.Columns(2), RadGridView1.Columns(5))
        renderer.PrintPages.Add(RadGridView1.Columns(0), RadGridView1.Columns(1), RadGridView1.Columns(9))
        renderer.PrintPages.Add(RadGridView1.Columns(8), RadGridView1.Columns(7))
        renderer.PrintPages.Add(RadGridView1.Columns(3), RadGridView1.Columns(4), RadGridView1.Columns(6))
        printStyle.PrintRenderer = renderer
        RadGridView1.PrintStyle = printStyle

        Dim dialog As New RadPrintPreviewDialog(document) 
        dialog.ShowDialog() 

    End Sub
1 2 3 4 5 6