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;
                }
            }

        }
Unplanned
Last Updated: 16 May 2019 05:12 by ADMIN
To reproduce: please refer to the attached gif file. The CellClick is not fired for the child rows that belong to columns that exceed the width of the parent template.

Workaround: set the AutoSizeColumnsMode property to Fill.

this.radVirtualGrid1.AutoSizeColumnsMode = Telerik.WinControls.UI.VirtualGridAutoSizeColumnsMode.Fill;
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: 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: 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: 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: 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.
Unplanned
Last Updated: 31 Jan 2018 07:43 by ADMIN
ADMIN
Created by: Telerik Admin
Comments: 1
Category: VirtualGrid
Type: Feature Request
5
I miss grouping functionality in VirtualGrid. In my opinion, the following process would be conceivable:
1. user interaction triggers an event - e. g. GroupChanged (similar to FilterChanged).
2. This event determines all available groups and returns them to the VirtualGrid. 
3. if the user expand a group > a second event is fired - and returns all matching data rows.
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);
Unplanned
Last Updated: 14 Aug 2017 12:02 by ADMIN
ADMIN
Created by: Dess | Tech Support Engineer, Principal
Comments: 0
Category: VirtualGrid
Type: Feature Request
2
Scenario to cover: the user tries to filter the grid not with each entered symbol but when the value in the filter cell is committed (Enter key is pressed) and the editor is closed. The CellValuePushed event is fired only for data cells and the FilterChanged event is fired with each keystroke but not when the editor is closed. A similar scenario is valid for the new row. There is no suitable event for capturing when a certain cell is updated in the new row as well.
Unplanned
Last Updated: 14 Aug 2017 13:38 by Saji
Using RadVirtualGrid, I have a requirement for showing hierarchical levels of data. The parent level and child levels share the SAME column headers.  I am utilizing the QueryHasChildRows event of the grid to set the number of rows for each hierarchical level. In that event I set a few properties to control how a child view is rendered as below:

            else if (e.ViewInfo.HierarchyLevel > 0)
            {
                var items = ((IList<AllocStructNode>)e.ViewInfo.ParentViewInfo.Tag)[e.ViewInfo.ParentRowIndex];
                if (items.Children != null && items.Children.Count > 0)
                {
                    e.ViewInfo.Tag = items.Children;
                    e.ViewInfo.RowCount = items.Children.Count;
                    e.ViewInfo.HeaderRowHeight = 0;
                    e.ViewInfo.ShowHeaderRow = false;
                    e.ViewInfo.FilterRowHeight = 0;
                    e.ViewInfo.ShowFilterRow = false;
                    e.ViewInfo.Padding = new Padding(0);
                    e.ViewInfo.HorizontalScrollState = ScrollState.AlwaysHide;
                }
            }


When a new level is rendered, a new demarcated section of child table element with its own horizontal scrolling displayed. When the parent is horizontally scrolled, the child level doesn't scroll (not synchronized). Similarly, when the child is horizontally scrolled, the parent does not scroll as well.

Workaround:
See attached project.
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: 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();
Unplanned
Last Updated: 19 Jun 2017 11:06 by ADMIN
ADMIN
Created by: Dess | Tech Support Engineer, Principal
Comments: 0
Category: VirtualGrid
Type: Feature Request
1

			
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: 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: 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);
    }
}