Completed
Last Updated: 03 Dec 2018 14:52 by Dimitar
To reproduce: if you set the TableElement.RowHeight property, it affects the header row as well, but not all cells. As a result the header row overlaps the new row.

Workaround: set the TableElement.HeaderRowHeight as well.

  this.radVirtualGrid1.TableElement.HeaderRowHeight = 50;
Completed
Last Updated: 11 Oct 2018 12:24 by Dimitar
To reproduce: use the following code snippet. Navigate to the last page and press the button to clear the rows. You will notice that the current page index remains 10 although no rows are available in the grid

        public RadForm1()
        {
            InitializeComponent();

            this.radVirtualGrid1.RowCount = 1000;
            this.radVirtualGrid1.ColumnCount = 5;
            this.radVirtualGrid1.CellValueNeeded += radVirtualGrid1_CellValueNeeded;

            this.radVirtualGrid1.EnablePaging = true;
        }

        private void radVirtualGrid1_CellValueNeeded(object sender, Telerik.WinControls.UI.VirtualGridCellValueNeededEventArgs e)
        {
            e.Value = "Item" + e.RowIndex + "." + e.ColumnIndex;
        }

        private void radButton1_Click(object sender, EventArgs e)
        {
            this.radVirtualGrid1.RowCount = 0;
            this.radVirtualGrid1.ColumnCount = 5; 
        }

Workaround:  this.radVirtualGrid1.VirtualGridElement.FindDescendant<VirtualGridPagingPanelElement>().PageNumberTextBox.Text = "1";
Completed
Last Updated: 14 Sep 2018 13:40 by Dimitar
Completed
Last Updated: 21 Jun 2018 13:59 by ADMIN
ADMIN
Created by: Dess | Tech Support Engineer, Principal
Comments: 0
Category: VirtualGrid
Type: Bug Report
1
To reproduce: run the sample project and try to resize some of the columns.

RadVirtualGrid has 10 columns and 500 rows. You will notice the laggind while resizing the columns. Actually the number of the visible cells remains the same after the column's resizing. However, the CellValueNeeded event keeps firing.
Completed
Last Updated: 19 Feb 2018 15:05 by ADMIN
A newly created grid has its CurrentCell property initialized to Nothing. Pressing [PageDown] or any other key that causes scrolling will crash.

Steps to Reproduce:
1. Launch application
2. Press [PageDown]

 Sub New() 
        InitializeComponent()

        Me.RadVirtualGrid1.ColumnCount = 50
        Me.RadVirtualGrid1.RowCount = 100
        AddHandler Me.RadVirtualGrid1.CellValueNeeded, AddressOf RadVirtualGrid1_CellValueNeeded
    End Sub

    Private Sub RadVirtualGrid1_CellValueNeeded(sender As Object, e As Telerik.WinControls.UI.VirtualGridCellValueNeededEventArgs)
        e.Value = e.ColumnIndex
    End Sub

Workaround: 

Me.RadVirtualGrid1.CurrentCell = New Telerik.WinControls.UI.VirtualGridCellInfo(0, 0, Me.RadVirtualGrid1.MasterViewInfo)
Completed
Last Updated: 24 Jan 2018 11:08 by ADMIN
To reproduce:
- Enable the paging and add 1000 rows.
- Press Ctrl + End
- An exception is thrown.

Workaround:

radVirtualGrid1.VirtualGridElement.InputBehavior = new MyBehavior(radVirtualGrid1.VirtualGridElement);

class MyBehavior : VirtualGridInputBehavior
{
    public MyBehavior(RadVirtualGridElement element) : base(element)
    {

    }
    protected override bool HandleEndKey(KeyEventArgs keys)
    {
        this.GridElement.PageIndex = this.GridElement.TotalPages - 1;
      
        return true;
        //return base.HandleEndKey(keys);
    }
}
Completed
Last Updated: 19 Dec 2017 15:23 by ADMIN
The attached gif file illustrates how to reproduce the problem with the Demo application. 
Completed
Last Updated: 30 Oct 2017 06:48 by ADMIN
Use attached to reproduce (just start it and press enter).

Workaround:

class MyBehavior : VirtualGridInputBehavior
{
    public MyBehavior(RadVirtualGridElement element) : base(element)
    {

    }
    protected override bool HandleEnterKey(KeyEventArgs keys)
    {
        if (this.GridElement.CurrentCell != null)
        {
            return base.HandleEnterKey(keys);
        }
        return false; 
    }
}


radVirtualGrid1.VirtualGridElement.InputBehavior = new MyBehavior(radVirtualGrid1.VirtualGridElement);
Completed
Last Updated: 15 Aug 2017 10:54 by ADMIN
ADMIN
Created by: Dess | Tech Support Engineer, Principal
Comments: 0
Category: VirtualGrid
Type: Bug Report
1
Workaround:
this.radVirtualGrid1.RowCount += 100;
this.radVirtualGrid1.TableElement.PagingPanelElement.UpdateView();
Completed
Last Updated: 15 Aug 2017 10:28 by ADMIN
To reproduce:
void radButton1_Click(object sender, EventArgs e)
{
    this.radVirtualGrid1.CurrentCell = null;
}

Workaround:

class MyRadVirtualGrid : RadVirtualGrid
{
    protected override void CreateChildItems(RadElement parent)
    {
        base.CreateChildItems(parent);
        parent.Children.RemoveAt(0);
        var field = typeof(RadVirtualGrid).GetField("virtualGridElement", System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Instance);
        var element = new MyVirtualGridElement();
        field.SetValue(this,element);

        
        parent.Children.Add(element);
    }
}
class MyVirtualGridElement : RadVirtualGridElement
{
    protected override Type ThemeEffectiveType
    {
        get { return typeof(RadVirtualGridElement); }
    }
    protected override bool SetCurrentCell(VirtualGridCellInfo value)
    {
        if (value == null)
        {
            if (this.IsInEditMode && !this.EndEdit())
            {
                return false;
            }

            int row = int.MinValue;
            VirtualGridViewInfo viewInfo = null;

            if (this.CurrentCell != null)
            {
                row = this.CurrentCell.RowIndex;
                viewInfo = this.CurrentCell.ViewInfo;
            }

            if (this.CurrentCell != null && (value == null || this.CurrentCell.ViewInfo != value.ViewInfo || this.CurrentCell.RowIndex != value.RowIndex))
            {
                VirtualGridRowValidatingEventArgs e = new VirtualGridRowValidatingEventArgs(row, viewInfo);
                this.OnRowValidating(e);

                if (e.Cancel)
                {
                    return false;
                }
            }
            var currentCell = typeof(RadVirtualGridElement).GetField("currentCell", System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Instance);
            currentCell.SetValue(this, value);

            if (this.CurrentCell != null)
            {
                this.EnsureCellVisible(this.CurrentCell.RowIndex, this.CurrentCell.ColumnIndex, this.CurrentCell.ViewInfo);
            }

            VirtualGridTableElement tableElement = null;

            if (this.CurrentCell != null)
            {
                tableElement = this.GetTableElement(this.CurrentCell.ViewInfo);
            }
            else
            {
                tableElement = this.TableElement;
            }
            

            if (tableElement != null)
            {
                VirtualGridRowElement rowElement = tableElement.ViewElement.GetRowElement(row);

                if (rowElement != null)
                {
                    rowElement.Synchronize(false);
                }
            }

            if (value != null)
            {
                tableElement = this.GetTableElement(value.ViewInfo);
                if (tableElement != null)
                {
                    VirtualGridRowElement rowElement = tableElement.ViewElement.GetRowElement(value.RowIndex);

                    if (rowElement != null)
                    {
                        rowElement.Synchronize(false);
                    }
                }
            }

            if (viewInfo != null)
            {
                VirtualGridRowEventArgs args = new VirtualGridRowEventArgs(row, viewInfo);
                this.OnRowValidated(args);
            }

            this.OnCurrentCellChanged(EventArgs.Empty);

            return true;
        }
        return base.SetCurrentCell(value);
    }
}


Completed
Last Updated: 19 Jun 2017 12:25 by ADMIN
To reproduce:
- Remove the default padding:

private void RadVirtualGrid1_RowExpanding(object sender, VirtualGridRowExpandingEventArgs e)
{
     e.ChildViewInfo.Padding =new Padding(0,0,0,0);
 
}

Still some space remains, this can be seen in the demo application as well.
Completed
Last Updated: 10 Jan 2017 13:50 by ADMIN
To reproduce:
private void RadVirtualGrid1_EditorRequired(object sender, Telerik.WinControls.UI.VirtualGridEditorRequiredEventArgs e)
{
    switch (e.ColumnIndex)
    {
        case 1:
            {
                VirtualGridTextBoxControlEditor editor = new VirtualGridTextBoxControlEditor();
                editor.CharacterCasing = CharacterCasing.Upper;
                e.Editor = editor;
            }
            break;
    }
}

- Open the editor and try using the backspace or the arrow keys. 

Workaround:
class MyGrid : RadVirtualGrid
{
    protected override void OnKeyDown(KeyEventArgs e)
    {
        base.OnKeyDown(e);

        if (this.ActiveEditor is VirtualGridTextBoxControlEditor)
        {
            var editor = this.ActiveEditor as VirtualGridTextBoxControlEditor;
            var element =   editor.EditorElement as RadTextBoxControlElement;
            element.InputHandler.ProcessKeyDown(e);
        }
    }
    protected override void OnKeyUp(KeyEventArgs e)
    {
        base.OnKeyUp(e);

        if (this.ActiveEditor is VirtualGridTextBoxControlEditor)
        {
            var editor = this.ActiveEditor as VirtualGridTextBoxControlEditor;
            var element = editor.EditorElement as RadTextBoxControlElement;
            element.InputHandler.ProcessKeyUp(e);
        }
    }
}
Completed
Last Updated: 04 Jan 2017 19:15 by ADMIN
ADMIN
Created by: Dess | Tech Support Engineer, Principal
Comments: 0
Category: VirtualGrid
Type: Bug Report
1
To reproduce: use the following code snippet and follow the steps:
public RadForm1()
{
    InitializeComponent();

    this.radVirtualGrid1.RowCount = 10;
    this.radVirtualGrid1.ColumnCount = 5;
    this.radVirtualGrid1.CellValueNeeded+=radVirtualGrid1_CellValueNeeded;
}

private void radVirtualGrid1_CellValueNeeded(object sender, Telerik.WinControls.UI.VirtualGridCellValueNeededEventArgs e)
{
    e.Value = e.RowIndex + "." + e.ColumnIndex;
}

1. Pin (left or right) 1st column
2. Scroll horizontally (to not display 2nd column)
3. Unpin 1st column
4. Scroll horizontally to display 1st column
=> 1st column is hidden, the only way to make it visible is to resize a column or the entire window

Workaround: 

 private void radVirtualGrid1_ContextMenuOpening(object sender, Telerik.WinControls.UI.VirtualGridContextMenuOpeningEventArgs e)
 {
     foreach (RadItem item in e.ContextMenu.Items)
     {
         if (item.Text == 
             RadVirtualGridLocalizationProvider.CurrentProvider.GetLocalizedString(RadVirtualGridStringId.PinMenuItem))
         {
             foreach (RadMenuItem subItem in ((RadMenuItem)item).Items)
             {
                 if (subItem.Text == 
                     RadVirtualGridLocalizationProvider.CurrentProvider.GetLocalizedString(RadVirtualGridStringId.UnpinColumnMenuItem))
                 {
                     subItem.Click-=subItem_Click;
                     subItem.Click+=subItem_Click;
                 }
             }
         }
     }
 }

 private void subItem_Click(object sender, EventArgs e)
 {
      this.radVirtualGrid1.MasterViewInfo.SetColumnWidth(0, this.radVirtualGrid1.MasterViewInfo.GetColumnWidth(0));
 }
Completed
Last Updated: 04 Jan 2017 19:13 by ADMIN
To reproduce:
- Open the attached project.
- Unselect Column3 from the list.

Workaround:
this.radVirtualGrid1.MasterViewInfo.CustomColumns.RemoveAt(0);

foreach (VirtualGridRowElement rowElement in
    this.radVirtualGrid1.VirtualGridElement.TableElement.GetDescendants(delegate(RadElement x) { return x is VirtualGridRowElement; }, TreeTraversalMode.BreadthFirst))
{
    rowElement.CellContainer.Children.Clear();
}

Completed
Last Updated: 27 Dec 2016 16:18 by ADMIN
To reproduce:
- Change the editor to VirtualGridDropDownListEditor
- Press alpha-numeric key when the grid is not in edit mode.

Workaround:
 radVirtualGrid1.VirtualGridElement.InputBehavior = new MyBehavior(radVirtualGrid1.VirtualGridElement);

class MyBehavior : VirtualGridInputBehavior
{
    public MyBehavior(RadVirtualGridElement element) : base(element)
    {

    }
    protected override bool HandleAlphaNumericKey(KeyPressEventArgs keys)
    {
        if (!this.GridElement.IsInEditMode &&
            (this.GridElement.BeginEditMode == RadVirtualGridBeginEditMode.BeginEditOnKeystroke ||
             this.GridElement.BeginEditMode == RadVirtualGridBeginEditMode.BeginEditOnKeystrokeOrF2))
        {
            //this.GridElement.HideContextMenu();
            this.GridElement.BeginEdit();
            if (this.GridElement.ActiveEditor is VirtualGridDropDownListEditor)
            {
                string symbol = keys.KeyChar.ToString();
                var editor = this.GridElement.ActiveEditor as VirtualGridDropDownListEditor;
                var element = editor.EditorElement as RadDropDownListEditorElement;

                if ((element.AutoCompleteMode & AutoCompleteMode.Append) == AutoCompleteMode.Append)
                {
                    int index = element.AutoCompleteAppend.FindShortestString(symbol);

                    if (index == -1)
                    {
                        element.EditableElementText = symbol;
                        element.EditableElement.SelectionStart = 1;
                        element.EditableElement.SelectionLength = 0;

                        return true;
                    }
                }
               
            }
            return false;
        }

        return base.HandleAlphaNumericKey(keys);
    }
}
Completed
Last Updated: 27 Dec 2016 11:02 by ADMIN
To reproduce: use the following code snippet and try to select another cell.

public RadForm1()
{
    InitializeComponent();

    this.radVirtualGrid1.RowCount = 30;
    this.radVirtualGrid1.ColumnCount = 5;
    this.radVirtualGrid1.CellValueNeeded += radVirtualGrid1_CellValueNeeded;
      
    this.radVirtualGrid1.CurrentCellChanging += radVirtualGrid1_CurrentCellChanging;
}

private void radVirtualGrid1_CurrentCellChanging(object sender, Telerik.WinControls.UI.VirtualGridCellInfoCancelEventArgs e)
{
    e.Cancel = true;
}

private void radVirtualGrid1_CellValueNeeded(object sender, Telerik.WinControls.UI.VirtualGridCellValueNeededEventArgs e)
{
    e.Value = e.RowIndex + "." + e.ColumnIndex;
}

Workaround:

public class CustomVirtualGrid : RadVirtualGrid
{
    public override string ThemeClassName  
    { 
        get 
        { 
            return typeof(RadVirtualGrid).FullName;  
        }
    }

    protected override void OnMouseDown(MouseEventArgs e)
    {
        if (e.Button == System.Windows.Forms.MouseButtons.Left)
        {
            return;
        }
        base.OnMouseDown(e);
    }
}

Completed
Last Updated: 20 Sep 2016 06:48 by ADMIN
ADMIN
Created by: Dess | Tech Support Engineer, Principal
Comments: 0
Category: VirtualGrid
Type: Bug Report
1
To reproduce:

public Form1()
{
    InitializeComponent();

    this.radVirtualGrid1.ColumnCount = 5;
    this.radVirtualGrid1.RowCount = 20;
    this.radVirtualGrid1.CellValueNeeded += radVirtualGrid1_CellValueNeeded;
}

private void radVirtualGrid1_CellValueNeeded(object sender, Telerik.WinControls.UI.VirtualGridCellValueNeededEventArgs e)
{
    e.Value = "Data" + e.RowIndex + "." + e.ColumnIndex;
}

Workaround: use a custom ScrollableVirtualCellsContainer:

public Form1()
{
    InitializeComponent();
    this.radVirtualGrid1.CreateRowElement += radVirtualGrid1_CreateRowElement;
    this.radVirtualGrid1.ColumnCount = 5;
    this.radVirtualGrid1.RowCount = 20;
    this.radVirtualGrid1.CellValueNeeded += radVirtualGrid1_CellValueNeeded;
}

private void radVirtualGrid1_CreateRowElement(object sender, VirtualGridCreateRowEventArgs e)
{
    e.RowElement = new CustomVirtualGridRowElement();
}

private void radVirtualGrid1_CellValueNeeded(object sender, Telerik.WinControls.UI.VirtualGridCellValueNeededEventArgs e)
{
    e.Value = "Data" + e.RowIndex + "." + e.ColumnIndex;
}

public class CustomVirtualGridRowElement : VirtualGridRowElement
{
    public CustomVirtualGridRowElement()
        : base()
    {
        FieldInfo fi = typeof(VirtualGridRowElement).GetField("scrollableColumns", BindingFlags.NonPublic | BindingFlags.Instance);
        ScrollableVirtualCellsContainer scrollableColumns = fi.GetValue(this) as ScrollableVirtualCellsContainer;
        CustomScrollableVirtualCellsContainer newScrollableColumns = new CustomScrollableVirtualCellsContainer();
        FieldInfo fi2 = typeof(ScrollableVirtualCellsContainer).GetField("rowElement", BindingFlags.NonPublic | BindingFlags.Instance);
        fi2.SetValue(newScrollableColumns, this);
        this.Children.Remove(scrollableColumns);
        this.Children.Insert(1, newScrollableColumns);
    }
}

public class CustomScrollableVirtualCellsContainer : ScrollableVirtualCellsContainer
{
    protected override SizeF MeasureElementCore(RadElement element, SizeF availableSize)
    {
        int scrollOffset = 0;

        if (this.RowElement.TableElement.ColumnScroller.ScrollMode == ItemScrollerScrollModes.Discrete)
        {
            for (int i = 0; i < this.RowElement.TableElement.ColumnScroller.Scrollbar.Value; i++)
            {
                scrollOffset += this.RowElement.TableElement.ColumnScroller.GetScrollHeight(
                    this.RowElement.TableElement.ViewInfo.ColumnsViewState.GetItemSize(i));
            }
        }
        else
        {
            scrollOffset = this.RowElement.TableElement.HScrollBar.Value;
        }

        VirtualGridCellElement cellElement = element as VirtualGridCellElement;

        int itemOffset = this.RowElement.ViewInfo.ColumnsViewState.GetItemOffset(cellElement.Data);
        int itemWidth = this.RowElement.ViewInfo.ColumnsViewState.GetItemSize(cellElement.Data);

        element.Measure(availableSize);

        if (itemOffset + itemWidth > scrollOffset && itemOffset < scrollOffset)
        {
            return new SizeF((itemOffset + itemWidth) - scrollOffset, element.DesiredSize.Height);
        }

        return element.DesiredSize;
    }
}
Completed
Last Updated: 20 Sep 2016 06:36 by ADMIN
To reproduce:
- Subscribe to the SelectionChanged event.
- Move the mouse while holding the left button.
- The event is fire multiple times.

Workaround:
VirtualGridCellInfo prevCell = null;
private void OnGridSelectionChanged(object sender, EventArgs e)
{
    if (prevCell != gvItems.CurrentCell)
    {
        _selectionChangedCount++;
    
        tbLog.AppendText("Selection changed " + _selectionChangedCount + "\r\n");
    }
    prevCell = gvItems.CurrentCell;
}
Completed
Last Updated: 03 Aug 2016 14:18 by ADMIN
Please refer to the attached sample project.
Completed
Last Updated: 28 Jul 2016 05:52 by ADMIN
To reproduce:
public RadForm1()
{
    InitializeComponent();
    radVirtualGrid1.CellValueNeeded += RadVirtualGrid1_CellValueNeeded;
    radVirtualGrid1.ColumnCount = 20;
    radVirtualGrid1.RowCount = 1000;
    radVirtualGrid1.AutoSizeColumnsMode = Telerik.WinControls.UI.VirtualGridAutoSizeColumnsMode.Fill;
}

private void RadVirtualGrid1_CellValueNeeded(object sender, Telerik.WinControls.UI.VirtualGridCellValueNeededEventArgs e)
{
    e.Value = string.Format("Col {0} Row{1}", e.ColumnIndex, e.RowIndex);
}

- Press and hold the down key, you will notice that the selection freezes after some time and is updated after the key is released.