Completed
Last Updated: 20 Nov 2023 14:30 by ADMIN
Release R3 2023 SP1 (2023.3.1114)

When the control is populated with hierarchy data, the current arrow icon and the expander icon overlap each other. This is observed when you click on a row.

As a workaround, we can increase the size of the indent column to leave enough space for both icons.

this.radVirtualGrid1.TableElement.IndentColumnWidth = 40;

Then we can move the current row arrow icon to the left (or right, depending on your requirement) in the CellFormatting event handler of the control.

private void radVirtualGrid1_CellFormatting(object sender, VirtualGridCellElementEventArgs e)
{
    if (e.CellElement is VirtualGridIndentCellElement)
    {
        var indentCell = e.CellElement as VirtualGridIndentCellElement;
        indentCell.ImageLayout = ImageLayout.None;
        indentCell.ImageAlignment = ContentAlignment.MiddleLeft;
    }
}
Here is the result of executing the above code:

 

 

 

Completed
Last Updated: 20 Nov 2023 07:43 by ADMIN
Release R3 2023 SP1 (2023.3.1114)

Currently, this behavior is available for RadGridView and the parent row becomes current/selected after expanding. Please refer to the attached gif file for RadGridView and the missing functionality for RadVirtualGrid.

 

 

Completed
Last Updated: 27 Mar 2023 06:39 by ADMIN
Release R1 2023 SP1

RadVirtualGrid.Selection.HasSelection (VirtualGridSelection.HasSelection) or is never false.

RadVirtualGrid grid = new RadVirtualGrid();
var hasSelection1 = grid.Selection.HasSelection; 
_grid.Selection.ClearSelection();
var hasSelection2 = grid.Selection.HasSelection;

After initializing the grid, and not loading anything, HasSelection is true, while nothing is selected.

After clearing the selection, HasSelection remains true.

This property is used in your own code as a pretest for some operations. (Like Copy or Cut).

Am I interpreting this property the wrong way?

Completed
Last Updated: 27 Mar 2023 06:39 by ADMIN
Release R1 2023 SP1
When a CUT operation is executed the control is not visually synchronized with the data cell values.
Completed
Last Updated: 27 Mar 2023 06:36 by ADMIN
Release R1 2023 SP1
Created by: Martin
Comments: 1
Category: VirtualGrid
Type: Bug Report
0

Repro steps:

  • Create a RadVirtualGrid
  • Fill it with some records.
  • Make sure nothing is selected (RadVirtualGridElement.CurrentCell is null)
  • Press CTRL-C
  • A NullReferenceException is thrown (this because RadVirtualGridElement.CopyToClipboard accesses CurrentCell.ViewInfo while CurrentCell is null.)

Exception:

Message             : Object reference not set to an instance of an object.
Type                : System.NullReferenceException
Source              : Telerik.WinControls.GridView
Stack trace         : Telerik.WinControls.UI.RadVirtualGridElement.CopyToClipboard(Int32 startRow, Int32 startColumn, Int32 endRow, Int32 endColumn, VirtualGridViewInfo viewInfo, Boolean selectedOnly, Boolean cut)
                      Telerik.WinControls.UI.RadVirtualGridElement.CopySelection()
                      Turien.Windows.Forms.Telerik.VirtualGrid.VirtualGridViewPlus.RadVirtualGridElementPlus.CopySelection()
                      Turien.Windows.Forms.Telerik.VirtualGrid.VirtualGridViewPlus.VirtualGridInputBehaviorPlus.HandleUnhandledKeys(KeyEventArgs keys)
                      Telerik.WinControls.UI.VirtualGridInputBehavior.HandleKeyDown(KeyEventArgs args)
                      Telerik.WinControls.UI.RadVirtualGrid.OnKeyDown(KeyEventArgs e)
                      System.Windows.Forms.Control.ProcessKeyEventArgs(Message& m)
                      System.Windows.Forms.Control.ProcessKeyMessage(Message& m)
                      System.Windows.Forms.Control.WmKeyChar(Message& m)
                      System.Windows.Forms.Control.WndProc(Message& m)
                      System.Windows.Forms.ScrollableControl.WndProc(Message& m)
                      Telerik.WinControls.RadControl.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)
                      System.Windows.Forms.UnsafeNativeMethods.DispatchMessageW(MSG& msg)
                      System.Windows.Forms.Application.ComponentManager.System.Windows.Forms.UnsafeNativeMethods.IMsoComponentManager.FPushMessageLoop(IntPtr dwComponentID, Int32 reason, Int32 pvLoopData)
                      System.Windows.Forms.Application.ThreadContext.RunMessageLoopInner(Int32 reason, ApplicationContext context)
                      System.Windows.Forms.Application.ThreadContext.RunMessageLoop(Int32 reason, ApplicationContext context)
                      System.Windows.Forms.Application.Run(Form mainForm)
                      Turien.Schade.PremiumCalculator.LookupTableManager.Program.Main()


Completed
Last Updated: 27 Mar 2023 06:36 by ADMIN
Release R1 2023 SP1

When copying to from the RadVirtualGrid to the clipboard, the HTML format is not supported.

I was thinking about creating a feature request, but I really think this is a bug, because:

  1. It is not consistent with its little brother RadGridView, which does support HTML.
  2. HTML should be supported by Teleriks own documentation: https://docs.telerik.com/devtools/winforms/controls/virtualgrid/copy-paste-cut 

Please, implement the support for HTML.

Completed
Last Updated: 27 Mar 2023 06:36 by ADMIN
Release R1 2023 SP1

When I use the Copy method in the RadGridView, the content is copied to the clipboard in multiple formats. Each format can be cancelled. If a format is cancelled it is not even serialized into the DataObject. This way a programmer can replace the copy-routine for that format with his own.

When I do the same with RadVirtualGrid, and I only want to copy format CSV and I want to cancel the rest, nothing is copied to the clipboard. The funny thing is, inspecting the code, the data is always serialized to the DataObject BEFORE the event is fired to find out if that action is needed. This is a performance penalty.

So these two behaviors are inconsistent. It is also inconsistent the the Paste-operations of both grids.

Current code:

public void CopyToClipboard(
      int startRow,
      int startColumn,
      int endRow,
      int endColumn,
      VirtualGridViewInfo viewInfo,
      bool selectedOnly,
      bool cut)
    {
      DataObject dataObject = new DataObject();
      string data1 = this.ProcessContent(DataFormats.Text, startRow, startColumn, endRow, endColumn, viewInfo, selectedOnly, cut);
      dataObject.SetData(DataFormats.UnicodeText, false, (object) data1);
      VirtualGridClipboardEventArgs args1 = new VirtualGridClipboardEventArgs(false, DataFormats.UnicodeText, dataObject, this.CurrentCell.ViewInfo);
      this.OnCopying(args1);
      if (args1.Cancel)
        return;
      dataObject.SetData(DataFormats.Text, false, (object) data1);
      VirtualGridClipboardEventArgs args2 = new VirtualGridClipboardEventArgs(false, DataFormats.Text, dataObject, this.CurrentCell.ViewInfo);
      this.OnCopying(args2);
      if (args2.Cancel)
        return;
      string data2 = this.ProcessContent(DataFormats.CommaSeparatedValue, startRow, startColumn, endRow, endColumn, viewInfo, selectedOnly, cut);
      dataObject.SetData(DataFormats.CommaSeparatedValue, false, (object) data2);
      VirtualGridClipboardEventArgs args3 = new VirtualGridClipboardEventArgs(false, DataFormats.CommaSeparatedValue, dataObject, this.CurrentCell.ViewInfo);
      this.OnCopying(args3);
      if (args3.Cancel)
        return;
      Clipboard.SetDataObject((object) dataObject);
    }
Suggested code:


public void CopyToClipboard(
	int startRow,
	int startColumn,
	int endRow,
	int endColumn,
	VirtualGridViewInfo viewInfo,
	bool selectedOnly,
	bool cut)
{
	DataObject dataObject = new DataObject();

	VirtualGridClipboardEventArgs eventArgs = new VirtualGridClipboardEventArgs(false, DataFormats.UnicodeText, dataObject, CurrentCell.ViewInfo);
	OnCopying(eventArgs);
	bool useText = !eventArgs.Cancel;
	
	eventArgs = new VirtualGridClipboardEventArgs(false, DataFormats.UnicodeText, dataObject, CurrentCell.ViewInfo);
	OnCopying(eventArgs);
	bool useUnicodeText = !eventArgs.Cancel;

	if (useText || useUnicodeText)
	{
		string text = __instance.ProcessContent(DataFormats.Text, startRow, startColumn, endRow, endColumn, viewInfo, cut);
		if (useText)
			dataObject.SetData(DataFormats.Text, false, text);
		if (useUnicodeText)
			dataObject.SetData(DataFormats.UnicodeText, false, text);
	}
	eventArgs = new VirtualGridClipboardEventArgs(false, DataFormats.Text, dataObject, CurrentCell.ViewInfo);
	OnCopying(eventArgs);
	if (!eventArgs.Cancel)
	{
		string csv = __instance.ProcessContent(DataFormats.CommaSeparatedValue, startRow, startColumn, endRow, endColumn, viewInfo, selectedOnly, cut);
		dataObject.SetData(DataFormats.CommaSeparatedValue, false, csv);
	}
	
	if (dataObject.GetFormats().Length > 0)
		Clipboard.SetDataObject(dataObject);
}

Completed
Last Updated: 07 Jun 2021 16:24 by ADMIN
Release R2 2021 SP1
I'm trying to save the layout of a VirtualGrid to retain the user's settings and I started setting up the custom serialization rules and was continually getting errors.
Completed
Last Updated: 06 Apr 2021 13:41 by ADMIN
Release R2 2021

When you have a RadVirtualGrid with hierarchy and after expanding a row if you right-click a cell in the child grid and select the "Copy" item, it doesn't copy the text of the cell I right-clicked, it copies the text of the first cell. 

Please test with the attached sample project.

Completed
Last Updated: 23 Feb 2021 10:37 by ADMIN
Release R1 2021 SP2
1.The editor overlapping other cells after editing.

2. The arrow, that is actually meant to open the DropDown, cannot be clicked. Only the cell under it is clicked instead.
Completed
Last Updated: 18 Feb 2021 12:21 by ADMIN
Release R1 2021 SP2

I have a RadVirtualGrid with hierarchical data. When I change the page, then expand a row, and then hit the tab key I get an ArgumentOutOfRangeException:

Value of '-3838' is not valid for 'Value'. 'Value' must be between 'Minimum' and 'Maximum'.
Parameter name: Value

 

Completed
Last Updated: 08 Feb 2021 13:53 by ADMIN
Release R1 2021 SP2

Hi,

I have a RadVirtualGrid. I add a filter descriptor and then fetch the filtered data from the data store. I then clear the filters and perform a different fetch from the store. However, when I click in the filter value textbox the text from the previous filter operation is still there even though I purposely call radVirtualGrid.FilterDescriptors.Clear() prior to fetching the data from the store.

The filter text doesn't display in the filter row for the column where the filter was entered until I click in the text edit area.

How do I get rid of the text from the previous filter?

thanks,

Mike

Completed
Last Updated: 12 Jun 2020 16:00 by ADMIN
Release R2 2020 SP1

Please use the following code snippet and click the filter button for the first column in the virtual grid. You will notice that the default menu is shown:

        RadContextMenu menu = new RadContextMenu();
        public RadForm1()
        {
            InitializeComponent();
            RadDateTimePicker aDateTimePicker = new RadDateTimePicker();
            RadMenuItem theMenuItem = new RadMenuItem();
            theMenuItem.MinSize = new Size(200, 30);
            RadHostItem theHostItem = new RadHostItem(aDateTimePicker);
            theMenuItem.Children.Add(theHostItem); 
            menu.Items.Add(theMenuItem);
            this.radVirtualGrid1.RowCount = 50;
            this.radVirtualGrid1.ColumnCount = 5;
            this.radVirtualGrid1.CellValueNeeded+=radVirtualGrid1_CellValueNeeded;

            this.radVirtualGrid1.AllowFiltering = true;
            this.radVirtualGrid1.ContextMenuOpening+=radVirtualGrid1_ContextMenuOpening;
        }

        private void radVirtualGrid1_ContextMenuOpening(object sender, VirtualGridContextMenuOpeningEventArgs e)
        {
            int i;
            string theMenuItemText;

            if (e.RowIndex == -3 && e.ColumnIndex < 1)
            {
                e.ContextMenu = menu.DropDown; 
            }
        }

        private void radVirtualGrid1_CellValueNeeded(object sender, VirtualGridCellValueNeededEventArgs e)
        {
            e.Value = Guid.NewGuid().ToString();
        }

Completed
Last Updated: 21 Jan 2020 12:02 by ADMIN
Release R1 2019
ADMIN
Created by: Dess | Tech Support Engineer, Principal
Comments: 0
Category: VirtualGrid
Type: Bug Report
1
It is difficult to replicate the issue and it is not always reproduced. When using the splitter between columns[1] and columns[2]  to resize column[1] I found out that releasing the mouse button doesn't cause the splitter to be released, even when clicking on the grid. It seems to work ok once or twice but once it fails then keeps failing.

Workaround:
        private void radVirtualGrid1_MouseUp(object sender, MouseEventArgs e)
        {
            if (e.Button == System.Windows.Forms.MouseButtons.Left)
            {
                this.radVirtualGrid1.Cursor = Cursors.Default;
            }
        }
Completed
Last Updated: 03 Oct 2019 11:49 by ADMIN
Release R3 2019 SP1 (LIB 2019.3.1007)
Created by: n/a
Comments: 1
Category: VirtualGrid
Type: Bug Report
1

Hi,


I have a problem with the expansion of the last row.

After Row Expanding and Row Collapsing the last or second last row, the last row is not visible because it seems that there I some kind of lock on the scrollbar : it doesn’t scroll down neither with the mouse wheel nor with the button so it is not possible to move on the last row.

If instead you scroll up and then down the row became visible again.

In the attached example project.

 

Regards

 

 

 

Completed
Last Updated: 03 Oct 2019 11:47 by ADMIN
Release R3 2019 SP1 (LIB 2019.3.1007)
ADMIN
Created by: Dess | Tech Support Engineer, Principal
Comments: 0
Category: VirtualGrid
Type: Bug Report
5
To reproduce: open the VirtualGrid >> First Look example in QSF and follow the steps:

1) I have a virtual grid which has both vertical and horizontal scroll bars.

2) Scroll to the very bottom of the grid

3) Select the last row

4) Scroll all the way to the right

At this moment the selected row disappears from the view. While scrolling horizontally the vertical scrollbar jumps several rows above although it seems scrolled to the bottom. 
Completed
Last Updated: 03 Oct 2019 11:45 by ADMIN
Release R3 2019 SP1 (LIB 2019.3.1007)

To reproduce: 

Set the RowSpacing to 10. Press down until the last cell is selected. The view is not scrolled down. 

Completed
Last Updated: 14 Feb 2019 16:55 by ADMIN
Completed
Last Updated: 14 Feb 2019 16:42 by ADMIN

When you setup a hierarchical RadVirtualGrid and set the UseScrollbarsInHierarchy property to false and use VirtualGridAutoSizeColumnsMode.Fill for the child template, you expect that the column's width is calculated according to the total width of the respective template. Hence, if you shrink or enlarge the grid, the columns will shrink/enlarge respectively. However, if you double click the resize cursor between the column headers you will notice that the best-fit action is performed over the column and its width is adjusted. However, the VirtualGridAutoSizeColumnsMode.Fill setting is not respected and you either can't see all the columns, or you obtain some empty space if the column doesn't need much space. 

Completed
Last Updated: 18 Jan 2019 15:14 by ADMIN
ADMIN
Created by: Dess | Tech Support Engineer, Principal
Comments: 1
Category: VirtualGrid
Type: Bug Report
1
To reproduce: open the Demo application >> VirtualGrid >> First Look example. Follow the steps illustrated in the attached gif file. You will notice that when you expand a row, the "-" sign is show for a second and then it is returned to "+" although the row is still expanded. 

Workaround:
            this.radVirtualGrid1.CellFormatting += radVirtualGrid1_CellFormatting;
            this.radVirtualGrid1.RowExpanded += radVirtualGrid1_RowExpanded;
            this.radVirtualGrid1.RowCollapsed += radVirtualGrid1_RowCollapsed;



        private void radVirtualGrid1_RowCollapsed(object sender, VirtualGridRowExpandedEventArgs e)
        {
            if (expandedState.ContainsKey(e.RowIndex))
            {
                expandedState[e.RowIndex] = !expandedState[e.RowIndex];
            }
           
            this.radVirtualGrid1.TableElement.SynchronizeRow(e.RowIndex, true);
        }

        Dictionary<int, bool> expandedState = new Dictionary<int, bool>();

        private void radVirtualGrid1_RowExpanded(object sender, VirtualGridRowExpandedEventArgs e)
        {
            if (!expandedState.ContainsKey(e.RowIndex))
            {
                expandedState.Add(e.RowIndex, false);
            }
            expandedState[e.RowIndex] = !expandedState[e.RowIndex];
            this.radVirtualGrid1.TableElement.SynchronizeRow(e.RowIndex, true);
        }

        private void radVirtualGrid1_CellFormatting(object sender, Telerik.WinControls.UI.VirtualGridCellElementEventArgs e)
        {
            VirtualGridIndentCellElement indentCell = e.CellElement as VirtualGridIndentCellElement;
            if (indentCell != null)
            {
                if (expandedState.ContainsKey(e.CellElement.RowIndex) && expandedState[e.CellElement.RowIndex] == true)
                {
                    indentCell.ExpanderItem.SignImage = Properties.Resources.chevron_up;
                }
                else
                {
                    indentCell.ExpanderItem.SignImage = Properties.Resources.chevron_down;
                }
            }

        }
1 2 3