Unplanned
Last Updated: 05 Mar 2024 14:11 by Stenly

The FilterColumn method does not position the filtering popup on the passed column index when it is opened.

A workaround to this behavior would be to manually position the filtering popup using the following approach:

this.virtualGrid.FilterColumn(2);

var virtualizingCanvasBase = this.virtualGrid.ChildrenOfType<VirtualizingCanvasBase>().FirstOrDefault();

var columnsRenderInfoInfo = virtualizingCanvasBase.GetType().GetProperty("ColumnsRenderInfo", System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.NonPublic);

var columnsRenderInfo = columnsRenderInfoInfo.GetValue(virtualizingCanvasBase);

var offsetMethodInfo = columnsRenderInfo.GetType().GetMethod("OffsetFromIndex");

var filteringPopupPropertyInfo = this.virtualGrid.GetType().GetProperty("FilteringPopup", System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.NonPublic);

Popup filteringPopup = (Popup)filteringPopupPropertyInfo.GetValue(this.virtualGrid);

filteringPopup.HorizontalOffset = (double)offsetMethodInfo.Invoke(columnsRenderInfo, new object[1] { 2 });

The FilterColumn method should be called, in order for the filtering Popup to be created.

Completed
Last Updated: 18 Dec 2023 06:53 by ADMIN
Release LIB 2023.3.1218 (18 Dec 2023)
When the TextAlignment is set to right the Filter Icon overlaps the text in the header. 
Unplanned
Last Updated: 15 Nov 2023 12:26 by Martin Ivanov
The FilteringControl of a column filters a wrong column when an ItemPropertyInfo is inserted at runtime. The newly inserted property info should create a column placed between other columns (not at the end of the view). The new column filtering is wrong.
Completed
Last Updated: 15 Aug 2023 13:06 by ADMIN
Release LIB 2023.2.821 (21 Aug 2023)

The CellDecorationsNeeded event isn't raised for pinned columns/rows

I would expect this event would be raised regardless of pinned state. Otherwise the UI would not be consistent when columns/rows are pinned.


// SomeVirtualGrid.xaml.cs
public SomeVirtualGrid()
{
    InitializeComponent();
    vg.PinColumnLeft(0);
    vg.PinColumnLeft(1);
    vg.PinColumnLeft(2);
}

 


Completed
Last Updated: 10 Jul 2023 09:39 by ADMIN
Release R2 2023 SP1
The styling applied in the HeaderCellDecorationsNeeded event is not respected for the horizontal row headers. 
Completed
Last Updated: 29 May 2023 08:48 by ADMIN
Release R2 2023
Having pinned columns result in an exception when changing the ColumnWidth property of RadVirtualGrid.
Completed
Last Updated: 31 Oct 2022 12:02 by ADMIN
Release LIB 2022.3.1031(31 Oct 2022)

An ArgumentOutOfRangeException is thrown if you try to copy a pinned cell using Ctrl+C while there is a selected cell. This is reproduced by selecting an unpinned cell, then click a pinned cell to set is a current, and then press Ctrl+C to copy the pinned cell.

To work this around, override the RadVirtualGridCommands.Copy command behavior and implement the copy action from scratch.

static MainWindow()
{   
	CommandManager.RegisterClassCommandBinding(typeof(RadVirtualGrid), new CommandBinding(RadVirtualGridCommands.Copy, OnVirtualGridCopyExecuted, OnVirtualGridCopyCanExecute));
}

private static void OnVirtualGridCopyCanExecute(object sender, CanExecuteRoutedEventArgs e)
{
	e.Handled = true;
	e.CanExecute = true;
}

private static void OnVirtualGridCopyExecuted(object sender, ExecutedRoutedEventArgs e)
{
	var virtualGrid = (RadVirtualGrid)sender;
	var strBuilder = new StringBuilder();
	// DataView is a custom property in MyDataProvider (deriving from DataProvider) and it just returns this.Source (which is a protected property).
	var items = ((MyDataProvider)virtualGrid.DataProvider).DataView; 
	int pinnedColumnsCount = (int)virtualGrid.Tag;
	
	foreach (VirtualGridCellInfo cell in virtualGrid.SelectedCells)
	{
		int columnIndex = cell.ColumnIndex + pinnedColumnsCount;
		ItemPropertyInfo propertyInfo = virtualGrid.DataProvider.ItemProperties[columnIndex];
		var descriptor = (PropertyDescriptor)propertyInfo.Descriptor;
		object rowData = items.GetItemAt(cell.RowIndex);
		object cellValue = descriptor.GetValue(rowData);

		strBuilder.Append(cellValue + " ");
	}

	Clipboard.SetText(strBuilder.ToString());
}

Completed
Last Updated: 06 Oct 2022 08:52 by ADMIN
Release LIB 2022.3.1010 (10 Oct 2022)
The VirtualGrid is not scrolled horizontally when selecting the most right cell in the viewport and press Right arrow key to move the selection to a cell outside of the viewport. This action should scroll the viewport horizontally to the newly selected cell. 

The scrolling happens after few selection changes (Right key presses), but even then the selected cell is aligned to the right of the viewport instead of the left which should be expected. 


To work this around, you can disable the default behavior that happens on right click and then implement custom one from scratch. To do so, you can use the PreviewKeyDown event of RadVirtualGrid.

private void VirtualGrid_PreviewKeyDown(object sender, System.Windows.Input.KeyEventArgs e)
{
	var virtualGrid = (RadVirtualGrid)sender;
	if (e.Key == System.Windows.Input.Key.Right)
	{
		var currentCell = virtualGrid.CurrentCellInfo;
		var newCellIndex = Math.Min(currentCell.ColumnIndex + 1, virtualGrid.InitialColumnCount - 1);
		var nextCell = new VirtualGridCellInfo(currentCell.RowIndex, newCellIndex, vg);
		virtualGrid.CurrentCellInfo = nextCell;
		virtualGrid.SelectedCells.Clear();                
		virtualGrid.SelectedCells.Add(nextCell);

		var viewportWidth = this.panel.ViewportWidth - virtualGrid.RowHeaderWidth;
		var newCellX = (virtualGrid.ColumnWidth * nextCell.ColumnIndex) - this.panel.HorizontalOffset;
		if (newCellX >= viewportWidth)
		{
			var delta = virtualGrid.ColumnWidth + (newCellX - viewportWidth);
			this.panel.SetHorizontalOffset(this.panel.HorizontalOffset + delta);
		}
		e.Handled = true;
	}
}

private VirtualGridCompoundPanel panel;

private void VirtualGrid_Loaded(object sender, RoutedEventArgs e)
{
	var virtualGrid = (RadVirtualGrid)sender;
	this.panel = virtualGrid.FindChildByType<VirtualGridCompoundPanel>();            
}

Completed
Last Updated: 26 Sep 2022 11:40 by ADMIN
Release LIB 2022.3.1003 (3 Oct 2022)
When the UpdateUI method is called, the selected cells are cleared. 
Completed
Last Updated: 26 Sep 2022 11:40 by ADMIN
Release LIB 2022.3.1003 (3 Oct 2022)
When passed a collection of cell regions and the SelectionMode property is Extended, the SelectCellRegion method selects only the last cell region.
Completed
Last Updated: 13 Dec 2021 07:59 by ADMIN
Release LIB 2021.3.1213 (13 Dec 2021)

I have an application that uses docking. Each pane contain a virtual grid.

If the user toggles between panes, any future font size changes are not reflected by the virtual grid

I have attached a demo project that shows the problem.

 

After launching the application:

1) click the Increase/Decrease Font buttons to see the font size change.

2) click tab2 then go back to tab1

3) click the Increase/Decrease Font buttons to see the Virtual Grids font size no longer updates.

 

(I have a third virtual grid outside of the Docking that shows that the font does change if not used inside of a docking control)

Completed
Last Updated: 15 Oct 2021 13:44 by ADMIN
Release LIB 2021.3.1018 (18 Oct 2021)
CopyToClipboard method of the virtual grid copies the last selected cell.
Completed
Last Updated: 27 May 2021 11:41 by ADMIN
Release LIB 2021.2.531 (31/05/2021)
Setting/Binding SelectedIndex property does not change the selected item.
Completed
Last Updated: 21 May 2021 06:38 by ADMIN
Release LIB 2021.2.525 (25/05/2021)
When the UI Filtering is disabled through the IsFilterable or CanUserFilterColumns property, the filtering button is hidden, however the mouse cursor is changed to Hand in its location and the columns cannot be filtered when clicking over it. 
Completed
Last Updated: 12 Apr 2021 10:50 by ADMIN
Release LIB 2021.1.412
When the user clicks on a cell, the whole row will be selected. However, if we clear the selected items by calling the UnselectAll method, clicking again on the same cell does not select the row.
Completed
Last Updated: 12 Apr 2021 10:50 by ADMIN
Release LIB 2021.1.412
In this case, when we call PushCellValue on a VirtualGrid that is still not loaded a NullReferenceException is thrown.
Completed
Last Updated: 04 Nov 2020 09:34 by ADMIN
Release LIB 2020.3.1109 (11/09/2020)
Adding Greater/LessThan filter operator results in an exception when using a DataProvider and a DataTable as its source
Completed
Last Updated: 20 Feb 2020 11:14 by ADMIN
Release LIB 2020.1.224 (02/24/2020)

VirtualGridCellClipboardEventArgs.Cell.ColumnIndex is off by 1 if you pin a column to the left.

Same with VirtualGridCellClipboardEventArgs.Cell.RowIndex if you pin a column to the top.

 

Completed
Last Updated: 12 Nov 2019 06:34 by ADMIN
Release LIB 2019.3.1118
The ArgumentOutOfRangeException is thrown when there are pinned columns, and DataProvider is changed.
Completed
Last Updated: 28 Oct 2019 12:06 by ADMIN
Release LIB 2019.3.1028 (10/28/2019)
Only the first selected item is returned in the AddedItems argument of the SelectionChanged event when using the Extended selection mode.
1 2