Unplanned
Last Updated: 05 May 2023 12:04 by ADMIN
Created by: Philip
Comments: 1
Category: Grid
Type: Bug Report
2

Hello

 

What is the purpose of this (https://docs.telerik.com/blazor-ui/components/grid/selection/overview#row-drag-and-drop);

Row Drag and Drop

If the user drags selected rows, the current row selection will be cleared on row drop.

 

Is this a bug? As when you select multiple rows, then drag and drop the rows, it clears the bound selectedItems object (but the rows still remain ticked in the UI). Just confirming this is something that will be fixed?

 

Cheers

Phil

Unplanned
Last Updated: 13 Feb 2024 10:56 by ADMIN

I have a Grid bound to ObservableCollection and I try to add a new record, the Grid stays in edit mode even if I click the Save button. 

Workaround:

@using System.Collections.ObjectModel
@using Telerik.FontIcons

<TelerikGrid Data="@Cards"
             Height="800px"
             FilterMode="GridFilterMode.FilterRow"
             EditMode="GridEditMode.Inline"
             OnCreate="NewCard"
             OnUpdate="UpdateCard"
             OnDelete="DeleteCard"
             ConfirmDelete="true"
             @ref="@GridReference">
    <GridToolBarTemplate>
        <GridCommandButton Command="Add" Icon="@FontIcon.Plus">New</GridCommandButton>
    </GridToolBarTemplate>
    <GridColumns>
        <GridColumn Field="@nameof(AdminCard.SerialNumber)" Title="Serial number" />
        <GridColumn Field="@nameof(AdminCard.DisplayNumber)" Title="Display number" />
        <GridColumn Field="@nameof(AdminCard.Name)" />
        <GridCommandColumn Width="140px">
            <GridCommandButton Command="Save" Icon="@FontIcon.Save" ShowInEdit="true" />
            <GridCommandButton Command="Edit" Icon="@FontIcon.Pencil" />
            <GridCommandButton Command="Delete" Icon="@FontIcon.Trash" />
            <GridCommandButton Command="Cancel" Icon="@FontIcon.Cancel" ShowInEdit="true" />
        </GridCommandColumn>
    </GridColumns>
</TelerikGrid>

@code {
    TelerikGrid<AdminCard> GridReference { get; set; }

    public ObservableCollection<AdminCard> Cards { get; set; } = new();

    protected override async Task OnInitializedAsync() =>
      Cards = new ObservableCollection<AdminCard>{
        new AdminCard{SerialNumber="123", DisplayNumber="1234 1234", Name="Jim"}
                      };

    private async Task NewCard(GridCommandEventArgs args)
    {
        AdminCard card = (AdminCard)args.Item;
        Cards.Add(card);

        //apply this after saving the new record to the database
        var gridState = GridReference.GetState();
        gridState.InsertedItem = null;
        gridState.OriginalEditItem = null;
        await GridReference.SetStateAsync(gridState);
    }

    private async Task UpdateCard(GridCommandEventArgs args)
    {
        AdminCard fromGrid = (AdminCard)args.Item;
        AdminCard existing = Cards.Single(c => c.Id == fromGrid.Id);
        existing.SerialNumber = fromGrid.SerialNumber;
        existing.DisplayNumber = fromGrid.DisplayNumber;
        existing.Name = fromGrid.Name;
    }

    private async Task DeleteCard(GridCommandEventArgs args)
    {
        AdminCard card = (AdminCard)args.Item;
        Cards.Remove(card);
    }

    public class AdminCard
    {
        public string Id { get; set; } = Guid.NewGuid().ToString();
        public string SerialNumber { get; set; } = "";
        public string DisplayNumber { get; set; } = "";
        public string Name { get; set; } = "";
    }
}

Unplanned
Last Updated: 21 Aug 2023 11:30 by Zachary
I have a Grid with Virtual Rows. When the user reaches the last row in the current Page, the Enter key will not switch to the next row which is beyond the PageSize.
Completed
Last Updated: 24 Oct 2023 14:28 by ADMIN
Release 5.0.0 (15 Nov 2023) (R1 PI1)

When you zoom out, the span that displays the Grid pager's content has its style set to display: none, and it does not always reappear when you zoom in after that.

 

Reproduction

1. Run this REPL
2. Enlarge the Preview Side of the REPL as much as possible
3. Zoom out so the pager is hidden
4. Zoom in again
5. Pager does not reappear
6. Video Example
Completed
Last Updated: 12 Jan 2024 14:00 by Ben
Release 5.1.0 (31 Jan 2024) (R1 2024)
When using a Grid with a multi-column header which is locked, the layout breaks on horizontal scrolling. This behavior appears since Telerik UI Version 4.6 and also remains in 5.0.0 and 5.0.1.

See REPL sample (just use horizontal scroll): https://blazorrepl.telerik.com/wRPvclYX432myApT30.

When switching to Version 4.5 the Grid acts as expected.
Completed
Last Updated: 18 Mar 2024 09:58 by ADMIN

It seems that the issue appeared after upgrading to Telerik 5.0 from 4.6.

When using a Grid with a locked column and column virtualization enabled, focusing cell from that locked column breaks the layout on horizontal scrolling.

Unplanned
Last Updated: 20 Dec 2023 13:38 by Brett
I have disabled the built-in loader container for the Grid. Setting EnableLoaderContainer="false" prevents me from opening the next cell for editing with Enter and Tab in Incell edit mode
Unplanned
Last Updated: 25 Jan 2024 13:25 by Gert

The Grid is supposed to show a loading animation when it detects a data operation that requires more than 600ms to complete. However, if this operation is triggered programmatically through the state and not through the UI, the loading indicator is not shown.

Reproduction: https://blazorrepl.telerik.com/mSuPQpvx498wHvV816.

===

ADMIN EDIT

===

A possible workaround for the time being is to use a LoaderContainer component when invoking programmatic data operation similar to how the initial loader is shown here: https://demos.telerik.com/blazor-ui/grid/loading-animation.

Unplanned
Last Updated: 30 Apr 2024 15:40 by Niels
I'm trying to set the state of a Grid from the localstorage following the example in the documentation: https://docs.telerik.com/blazor-ui/knowledge-base/grid-save-load-state-localstorage.
This works but when I add the TelerikMediaQuery in my page, the selected items always get reset on page load. Sorting and filters stay applied but the selected items unfortunately not.
Duplicated
Last Updated: 08 May 2024 08:42 by ADMIN
Created by: Pratik
Comments: 0
Category: Grid
Type: Feature Request
2
The current Column Chooser is not user friendly and requires multiple clicks as well as user training. For these reasons, I would like the option to include a built in Column Chooser in one location, the Grid ToolBar. 
Completed
Last Updated: 14 Nov 2024 09:27 by ADMIN
Release 7.0.0

The header cell includes the following inner elements when the Grid is sortable:

However, if I disable sorting all those elements are omitted which is not consistent.

 

Unplanned
Last Updated: 21 May 2024 15:31 by ADMIN

Hi,

 when using SetStateAsync(), OnRead is called ok, but loading indicator is not presented as usual.

How to reproduce:

1. button = loading data by SetStateAsync(), no progress indicated.

2. button = loading data throught rebind, is ok

demo in repl

demo is based on https://docs.telerik.com/blazor-ui/components/grid/refresh-data

Expected: same behavior as by button 2.  -> Rebind()->OnRead()...loading progress

Thanks

Completed
Last Updated: 05 Aug 2024 13:31 by ADMIN
Release 6.1.0

Reproduceable example: https://blazorrepl.telerik.com/QSEganvg12BVw2ZU37

Steps to reproduce:

  • Add a TelerikGrid to the page - most properties on the grid do not matter for this issue
  • Implement the OnStateInit event
  • Define the GridAggregates render fragment within the TelerikGrid, but leave it empty - do not put any components inside it
  • When the page initializes, note that OnStateInit is never fired

If you remove the GridAggregates emtpy render fragment, or put at least one GridAggregate component in it, OnStateInit fires like expected.

In my project, I've created a component that wraps around the TelerikGrid that I use on all my pages, so that I can have many properties and functions set to reasonable defaults for my use case. My component has an option to conditionally include GridAggregate components within the inner TelerikGrid's GridAggregates render fragment based on separate configuration. If no separate configuration is provided, no GridAggregate components are included, and the GridAggregates render fragment is left blank. Since my component is built in razor markup, there isn't a great option for nulling out that render fragment if it's empty. I had no problems with this exact same code in UI for Blazor version 5.1, and I hope this can be fixed.

Unplanned
Last Updated: 09 Oct 2024 07:04 by ADMIN

We have a grid with a GridCheckboxColumn that we have configured through a '.unselectable-row' style so that certain elements cannot be selected (those elements with a padlock in the second column cannot be selected).

The grid works correctly in isolation, but when we add a TelerikLoaderContainer that is displayed during data loading process, the grid doesn't working properly: it is possible to select all the enabled elements of the grid using the button in the header of the checkbox column. However it is not possible to deselect them from the button in the header of the checkbox column when there is any unselectable element.

Here it is a link to REPL with a reproducible example: https://blazorrepl.telerik.com/GyYhYXPI24gIYgIJ03

To reproduce the problem, you sholud select all grid elements from the checkbox column header button and try to deselect them. You will not be able to deselect all the elements. 
Now comment the LoaderContainer component and repeat the test. You will see that now it is possible to deselect correctly all the elements.

How can we deselect all the elements from the header while keeping the loadercontainer?

Unplanned
Last Updated: 16 Jul 2024 11:18 by Lajos

In a navigable Grid with incell edit, if a column has Editable=false the tabbing behavior is as follows: while the user is editing the previous editable cell pressing tab results in skipping the non-editable cell and moving the focus to the next editable cell to open it for edit.

However, the behavior is different when cancelling the editing through the OnEdit event. In this case, while the user is editing the previous editable cell pressing tab results in exiting the edit and keeping the focus to the cell. Subsequent tab press moves to focus to the pager.

Reproduction: https://blazorrepl.telerik.com/mykLFEFJ14mlqei429.

===

ADMIN EDIT

===

A possible option for the time being is to cancel the edit as shown in the example above but also force the Grid to enter edit of the next editable cell. You can do that through the State: Enter and Exit Grid Edit Mode Programmatically.

Here is a basic example, you may adjust it as needed to fit your exact requirements: https://blazorrepl.telerik.com/mSuLPAFP05HRs7B555.

Completed
Last Updated: 13 Aug 2024 10:32 by ADMIN
Release 2024 Q3 (Aug)
In a Grid with multi-column headers and cell selection, the selected cells do not match the area that the user dragged to select.
Completed
Last Updated: 13 Aug 2024 10:34 by ADMIN
Release 2024 Q3 (Aug)
The issue targets a Grid with cell selection and DragToSelect feature enabled where at least one column has Visible="false". With this configuration, the selected cells do not match the area that the user dragged to select.
Completed
Last Updated: 14 Nov 2024 09:25 by ADMIN
Release 7.0.0

I am using InCell Grid editing. I want to prevent an edit cell from closing on certain condition. However, when I cancel the update with args.IsCancelled = true in OnUpdate, the user can still close the edited cell with Enter or Tab. This is inconsistent with inline or popup editing.

===

A possible workaround is to cancel both OnUpdate and the subsequent OnEdit.

https://blazorrepl.telerik.com/QykMHkks10APuDLQ47

@using System.ComponentModel.DataAnnotations

<TelerikGrid Data="@GridData"
             EditMode="@GridEditMode.Incell"
             OnEdit="@OnGridEdit"
             OnUpdate="@OnGridUpdate">
    <GridColumns>
        <GridColumn Field="@nameof(SampleModel.Name)" />
        <GridColumn Field="@nameof(SampleModel.Min)" />
        <GridColumn Field="@nameof(SampleModel.Max)" />
    </GridColumns>
</TelerikGrid>

<TelerikNotification @ref="@NotificationRef"
                     HorizontalPosition="@NotificationHorizontalPosition.Center"
                     VerticalPosition="@NotificationVerticalPosition.Top" />

@code {
    private TelerikNotification? NotificationRef { get; set; }

    private List<SampleModel> GridData { get; set; } = new();

    private bool ShouldCancelOnEdit { get; set; }

    private int LastId { get; set; }

    private void OnGridEdit(GridCommandEventArgs args)
    {
        if (ShouldCancelOnEdit)
        {
            ShouldCancelOnEdit = false;
            args.IsCancelled = true;
        }
    }

    private void OnGridUpdate(GridCommandEventArgs args)
    {
        var updatedItem = (SampleModel)args.Item;

        if (updatedItem.Min > updatedItem.Max)
        {
            NotificationRef?.Show(new NotificationModel()
            {
                ThemeColor = ThemeConstants.Notification.ThemeColor.Error,
                Text = "Min must be smaller than Max"
            });

            args.IsCancelled = true;
            ShouldCancelOnEdit = true;
        }
        else
        {
            var originalItemIndex = GridData.FindIndex(i => i.Id == updatedItem.Id);

            if (originalItemIndex != -1)
            {
                GridData[originalItemIndex] = updatedItem;
            }

            ShouldCancelOnEdit = false;
        }
    }

    protected override void OnInitialized()
    {
        for (int i = 1; i <= 5; i++)
        {
            GridData.Add(new SampleModel()
            {
                Id = ++LastId,
                Name = $"SampleModel {LastId}",
                Min = Random.Shared.Next(1, 10),
                Max = Random.Shared.Next(11, 20)
            });
        }
    }

    public class SampleModel
    {
        public int Id { get; set; }
        [Required]
        public string Name { get; set; } = string.Empty;
        public int Min { get; set; }
        public int Max { get; set; }
    }
}

Unplanned
Last Updated: 07 Oct 2024 12:41 by Michael

The behavior is reproducible in server-side apps when using the Inline or Incell mode and editing numerical values.

When inputting into the field the first value input is either ignored or removed. The default is 0, when backspacing to clear it and then inputting a number, sometimes the number is shown and then immediately removed, and sometimes it's not shown at all and will only displayed when typed a second time.

===

ADMIN EDIT

===

Possible workarounds for the time being:

Unplanned
Last Updated: 28 Nov 2024 12:39 by Hannes
In my scenario, the Grid OnStateChanged event is triggered by programmatically changing column widths or visibility. I want to know whether the event is triggered by these changes or by the user interactions through the Grid UI. For example, expose an additional property in GridStateEventArgs.