Planned
Last Updated: 14 Aug 2020 07:40 by Fabian

1. Load a page with a Grid with Reorderable = true

2. While Grid is rendering load a different page

--> Unhandled ObjectDisposedException


Error: System.ObjectDisposedException: Cannot access a disposed object.

Object name: 'DotNetObjectReference`1'.

   at Microsoft.JSInterop.DotNetObjectReference`1.ThrowIfDisposed()

   at Microsoft.JSInterop.JSRuntime.TrackObjectReference[TValue](DotNetObjectReference`1 dotNetObjectReference)

   at Microsoft.JSInterop.Infrastructure.DotNetObjectReferenceJsonConverter`1.Write(Utf8JsonWriter writer, DotNetObjectReference`1 value, JsonSerializerOptions options)

   at System.Text.Json.JsonSerializer.WriteDictionary[TProperty](JsonConverter`1 converter, JsonSerializerOptions options, WriteStackFrame& current, Utf8JsonWriter writer)

   at System.Text.Json.JsonPropertyInfoNotNullable`4.OnWriteDictionary(WriteStackFrame& current, Utf8JsonWriter writer)

   at System.Text.Json.JsonPropertyInfo.WriteDictionary(WriteStack& state, Utf8JsonWriter writer)

   at System.Text.Json.JsonSerializer.HandleDictionary(JsonClassInfo elementClassInfo, JsonSerializerOptions options, Utf8JsonWriter writer, WriteStack& state)

   at System.Text.Json.JsonSerializer.Write(Utf8JsonWriter writer, Int32 originalWriterDepth, Int32 flushThreshold, JsonSerializerOptions options, WriteStack& state)

   at System.Text.Json.JsonSerializer.WriteCore(Utf8JsonWriter writer, Object value, Type type, JsonSerializerOptions options)

   at System.Text.Json.JsonSerializer.WriteCore(PooledByteBufferWriter output, Object value, Type type, JsonSerializerOptions options)

   at System.Text.Json.JsonSerializer.WriteCoreString(Object value, Type type, JsonSerializerOptions options)

   at Microsoft.JSInterop.JSRuntime.InvokeAsync[TValue](String identifier, CancellationToken cancellationToken, Object[] args)

   at Microsoft.JSInterop.JSRuntime.InvokeWithDefaultCancellation[T](String identifier, Object[] args)

   at Telerik.Blazor.Components.Grid.GridHeaderRowBase`1.InitColumnReorderable()

   at Telerik.Blazor.Components.Grid.GridHeaderRowBase`1.OnAfterRenderAsync(Boolean firstRender)

   at Microsoft.AspNetCore.Components.RenderTree.Renderer.GetErrorHandledTask(Task taskToHandle)

You might have to try a few times to dispose the page at the correct time.  With larger Grids it happens more frequently.

Grids without Reorderable = true do not throw an exception!

Unplanned
Last Updated: 11 Aug 2020 17:20 by ADMIN
Scheduled for 2.17.0

The issue manifests both when

  • using .Add() or .Remove() on an ObservableCollection
  • creating a new List<T>(updatedData)

Happens in 2.14.1 first.

*** Thread created by admin on customer behalf ***

Unplanned
Last Updated: 06 Aug 2020 10:37 by ADMIN
Created by: Robert
Comments: 1
Category: ContextMenu
Type: Bug Report
2
 
Unplanned
Last Updated: 05 Aug 2020 11:26 by ADMIN
Created by: Patrick
Comments: 0
Category: Charts
Type: Bug Report
1
Sometimes the chart tooltip goes off the screen. 
Declined
Last Updated: 05 Aug 2020 08:39 by ADMIN
Using the Excel Export for Grid creates the Excel file, but on opening it, the columns that contain data are hidden. Unless I unhide the columns, the sprceadsheet looks empty.
Duplicated
Last Updated: 05 Aug 2020 06:59 by ADMIN
Created by: ben
Comments: 1
Category: UI for Blazor
Type: Bug Report
0

Grid errors with both filtering and a detail template:

<Telerik.Blazor.Components.TelerikGrid Data="@GridData" FilterMode="Telerik.Blazor.GridFilterMode.FilterRow">

    <GridColumns>
        <Telerik.Blazor.Components.GridColumn Title="Name" Filterable="true" Field="@nameof(GridItem.Name)"></Telerik.Blazor.Components.GridColumn>
        <Telerik.Blazor.Components.GridColumn Field="@nameof(GridItem.Id)" Filterable="true" Title="Id"></Telerik.Blazor.Components.GridColumn>
    </GridColumns>

    <DetailTemplate>
            <div>Custom Template</div>
    </DetailTemplate>

</Telerik.Blazor.Components.TelerikGrid>
@code {

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

    protected override void OnInitialized()
    {
        GridData = GenerateData();
    }

    private List<GridItem> GenerateData()
    {
        List<GridItem> data = new List<GridItem>();
        for (int i = 0; i < 5; i++)
        {
            GridItem mdl = new GridItem { Id = i, Name = $"Name {i}" };
            data.Add(mdl);
        }
        return data;
    }

    public class GridItem
    {
        public int Id { get; set; }
        public string Name { get; set; }
    }

}

The grid renders correctly with either the DetailTemplate or FilterMode, but not both.

Example repo - https://github.com/kviiim/BlazorDetailTemplateGridFilterIssue

-Ben

Unplanned
Last Updated: 04 Aug 2020 11:23 by Roland

When I have a Navigable grid and I press Esc on the keyboard while editing/inserting a row, I want to do something (e.g., clean up the newly inserted row altogether from the data). Usually, I can use the OnCancel event for this, but it does not fire when pressing the Esc key on the keyboard.

*** Thread created on customer behalf by admin ***

Duplicated
Last Updated: 04 Aug 2020 09:12 by ADMIN

With using the Grid, I have several GridCommandButtons. Instead of displaying the button with an icon followed by text, I wanted to display just the icon and use the TelerikTooltip to display the text on hover. When I set the GridCommandButton.Title and inspect the DOM, there is no title attribute on the button even though the description of the GridCommandButton.Title property reads "The title attribute of the Button".

 

<TelerikGrid @ref="@Grid"
                Data="@Data"
                Pageable="true"
                Groupable="false"
                Sortable="true"
                FilterMode="GridFilterMode.FilterMenu"
                Resizable="true"
                Reorderable="true"
                EditMode="GridEditMode.Popup"
                SelectionMode="GridSelectionMode.Multiple"
                PageSize="5"
                OnUpdate="@UpdateHandler"
                OnDelete="@DeleteHandler">
    <GridColumns>
        <GridColumn Field="@nameof(UserInfo.UserName)" Title="User Name" Width="100px" />
        <GridColumn Field="@nameof(UserInfo.Email)" Width="100px" />
        <GridColumn Field="@nameof(UserInfo.FirstName)" Title="First Name" Width="100px" />
        <GridColumn Field="@nameof(UserInfo.LastName)" Title="Last Name" Width="100px" />
        <GridColumn Field="@nameof(UserInfo.PhoneNumber)" Title="Phone #" Width="100px" />
        <GridCommandColumn Width="190px">
            <GridCommandButton Command="Save" Icon="save" ShowInEdit="true">Save</GridCommandButton>
            <GridCommandButton Title="Edit" Command="Edit" Icon="edit"></GridCommandButton>
            <GridCommandButton Title="Delete" Command="Delete" Icon="delete"></GridCommandButton>
            <GridCommandButton Command="Cancel" Icon="cancel" ShowInEdit="true">Cancel</GridCommandButton>
            <GridCommandButton Title="Reset Password" OnClick="@((args) => ResetPasswordModal.Show(((UserInfo)args.Item).Id))" Icon="@IconName.Lock"></GridCommandButton>
            <GridCommandButton>Roles</GridCommandButton>
            <GridCommandButton>Profiles</GridCommandButton>
        </GridCommandColumn>
    </GridColumns>
    <GridToolBar>
        <GridCommandButton Title="Refresh" OnClick="@LoadData" Icon="@IconName.Reload"></GridCommandButton>
        <GridCommandButton Title="Add User" OnClick="@(() => CreateUserModal.Show())" Icon="add"></GridCommandButton>
    </GridToolBar>
</TelerikGrid>
Unplanned
Last Updated: 31 Jul 2020 17:36 by ADMIN
It use the OnCancel event to do some work and when it does not fire, I cannot invoke my logic.
Unplanned
Last Updated: 30 Jul 2020 18:04 by Brent
This makes it hard to distinguish from the rest of the page/grid
Completed
Last Updated: 30 Jul 2020 16:54 by ADMIN
Release 2.14.0
The widths of the columns become the widths of the initially rendered column at the same index, instead of the widths declared in the respective column markup.
Unplanned
Last Updated: 30 Jul 2020 16:50 by ADMIN

Reproducible:

 

1. Run the snippet below
2. click the grid
3. press Down until you reach the last row, then press Down again

 

<TelerikGrid Navigable="true" Pageable="false"
             Data=@GridData Height="400px" >
    <GridColumns>
        <GridColumn Field=@nameof(Employee.Name) />
        <GridColumn Field=@nameof(Employee.Team) Title="Team" />
    </GridColumns>
</TelerikGrid>

@code {
    public List<Employee> GridData { get; set; }

    protected override void OnInitialized()
    {
        GridData = new List<Employee>();
        for (int i = 0; i < 15; i++)
        {
            GridData.Add(new Employee()
            {
                EmployeeId = i,
                Name = "Employee " + i.ToString(),
                Team = "Team " + i % 3
            });
        }
    }

    public class Employee
    {
        public int EmployeeId { get; set; }
        public string Name { get; set; }
        public string Team { get; set; }
    }
}
Duplicated
Last Updated: 30 Jul 2020 16:46 by ADMIN

Video here

https://drive.google.com/file/d/12em-oc6xRJ_JjbFSANK9IqKDkK0f7p6y/view

 

Select an item in the grid and press and hold down arrow...


System.NullReferenceException: Object reference not set to an instance of an object.
   at Telerik.Blazor.Components.TelerikGridBase`1.FocusPagerAsync()
   at Telerik.Blazor.Components.TelerikGridBase`1.FocusCellAsync(GridNavigationCommandEventArgs args)
   at Telerik.Blazor.Components.TelerikGridBase`1.FocusAdjacentCellAsync(GridNavigationCommandEventArgs args, Int32 rowIndexOffset, Int32 columnIndexOffset)
   at Telerik.Blazor.Components.TelerikGridBase`1.FocusBottomCellAsync(GridNavigationCommandEventArgs args)
   at Telerik.Blazor.Components.TelerikGridBase`1.ExecuteNavigationCommandAsync(GridNavigationCommandEventArgs args)
   at Telerik.Blazor.Components.TelerikGridBase`1.ExecuteCommand(Object args)
   at Telerik.Blazor.Components.Grid.GridRowBase`1.OnExecuteCommand(GridCommandEventArgs commandArgs)
   at Telerik.Blazor.Components.Grid.GridDataCellBase`1.ExecuteCommandAsync(GridCommandEventArgs args)
   at Telerik.Blazor.Components.Grid.GridNavigableCellBase`1.ExecuteNavigationCommandAsync(String commandName, Int32 rowIndexOffset, Int32 columnIndexOffset, KeyboardEventArgs args)
   at Telerik.Blazor.Components.Grid.GridNavigableCellBase`1.ProcessKeyDown(KeyboardEventArgs args)
   at Telerik.Blazor.Components.Grid.GridContentCell`1.ProcessKeyDown(KeyboardEventArgs args)
   at Telerik.Blazor.Components.Grid.GridNavigableCellBase`1.OnKeyDown(KeyboardEventArgs args)
   at Microsoft.AspNetCore.Components.ComponentBase.CallStateHasChangedOnAsyncCompletion(Task task)
   at Microsoft.AspNetCore.Components.RenderTree.Renderer.GetErrorHandledTask(Task taskToHandle)

Planned
Last Updated: 29 Jul 2020 05:01 by ADMIN
Scheduled for 2.17.0
Loading the state does not populate the data in the filter menu popup (such as filter value and operator), but the filter operation happens as expected.
Declined
Last Updated: 26 Jul 2020 10:47 by ADMIN
Created by: Alberto
Comments: 3
Category: UI for Blazor
Type: Bug Report
0

Hello,

 

im trying to render a treview but its not showing any item, im also print the results of my query on a table using a for loop and it shows the results ok , but the trevieww its not loading any data. Attached my code :

@inherits LayoutComponentBase
@inject Blazored.LocalStorage.ILocalStorageService oLocalStorage
@using MAPCRUD.Model
@using MAP.Interfaces 
@inject IMapTreeviewMenuService MapTreeviewMenuService
<TelerikRootComponent>
    <div class="sidebar">

        <NavMenu />
        @if (MapMenuData == null)
        {
            <p><em>Loading...</em></p>
        }
        else
        {
            <TelerikTreeView Data="@MapMenuData">
                <TreeViewBindings>
                    <TreeViewBinding ParentIdField="@(nameof(MapTreeviewMenu.ParentIdValue))" TextField="@(nameof(MapTreeviewMenu.Text))" UrlField="@(nameof(MapTreeviewMenu.Url))" IconField="@(nameof(MapTreeviewMenu.Icon))" ></TreeViewBinding>
                </TreeViewBindings>
            </TelerikTreeView>
            <table>
                <thead>
                    <tr>
                        <th>Text</th>
                    </tr>
                </thead>
                <tbody>
                    @foreach (var menuData in MapMenuData)
                    {
                        <tr>
                            <td style="color:#fff;">@menuData.Url</td>
                        </tr>
                    }
                </tbody>
            </table>
        }
    </div>

    <div class="main">
        <div class="top-row px-4">
            <a href="https://docs.microsoft.com/aspnet/" target="_blank">About</a>
        </div>

        <div class="content px-4">
            @Body
        </div>
    </div>
</TelerikRootComponent>
@code {
    private IEnumerable<MapTreeviewMenu> MapMenuData;
    protected override async Task OnInitializedAsync()
    {
        await oLocalStorage.SetItemAsync("CollegeID", 1);
        await oLocalStorage.SetItemAsync("ApplicationID", 1);
        await oLocalStorage.SetItemAsync("RoleID", 2);
        await oLocalStorage.SetItemAsync("UserID", 1);

        int CollegeID = await oLocalStorage.GetItemAsync<int>("CollegeID");
        int ApplicationID = await oLocalStorage.GetItemAsync<int>("ApplicationID");
        int RoleID = await oLocalStorage.GetItemAsync<int>("RoleID");
        int UserID = await oLocalStorage.GetItemAsync<int>("UserID");

        MapMenuData = await MapTreeviewMenuService.GetMenuItems(CollegeID, ApplicationID, RoleID,  UserID);
    }
}
Unplanned
Last Updated: 24 Jul 2020 15:15 by ADMIN

Here's the reproducible:

@using System.ComponentModel.DataAnnotations
@* Used for the model annotations only *@

<strong>REPRO: activate the validation for the Name field to see the issue - click Save with an empty input</strong>

<TelerikGrid Data=@MyData EditMode="@GridEditMode.Popup" Pageable="true" Height="500px"
             OnUpdate="@UpdateHandler" OnDelete="@DeleteHandler" OnCreate="@CreateHandler">
    <GridToolBar>
        <GridCommandButton Command="Add" Icon="add">Add Employee</GridCommandButton>
    </GridToolBar>
    <GridColumns>
        <GridColumn Field=@nameof(SampleData.ID) Title="ID" Editable="false" />
        <GridColumn Field=@nameof(SampleData.Name) Title="Name" />
        <GridCommandColumn>
            <GridCommandButton Command="Save" Icon="save" ShowInEdit="true">Update</GridCommandButton>
            <GridCommandButton Command="Edit" Icon="edit">Edit</GridCommandButton>
            <GridCommandButton Command="Delete" Icon="delete">Delete</GridCommandButton>
            <GridCommandButton Command="Cancel" Icon="cancel" ShowInEdit="true">Cancel</GridCommandButton>
        </GridCommandColumn>
    </GridColumns>
</TelerikGrid>

@code {

    public class SampleData
    {
        public int ID { get; set; }

        [Required(ErrorMessage = "aa something else")] // the first word is 1 or 2 characters to show the issue
        public string Name { get; set; }
    }

    async Task UpdateHandler(GridCommandEventArgs args)
    {
        SampleData item = (SampleData)args.Item;

        // perform actual data source operations here through your service

        // if the grid Data is not tied to the service, you may need to update the local view data too
        var index = MyData.FindIndex(i => i.ID == item.ID);
        if (index != -1)
        {
            MyData[index] = item;
        }
    }

    async Task DeleteHandler(GridCommandEventArgs args)
    {
        SampleData item = (SampleData)args.Item;

        // perform actual data source operation here through your service

        // if the grid Data is not tied to the service, you may need to update the local view data too
        MyData.Remove(item);
    }

    async Task CreateHandler(GridCommandEventArgs args)
    {
        SampleData item = (SampleData)args.Item;

        // perform actual data source operation here through your service

        // if the grid Data is not tied to the service, you may need to update the local view data too
        item.ID = MyData.Count + 1;
        MyData.Insert(0, item);
    }


    public List<SampleData> MyData { get; set; }

    protected override void OnInitialized()
    {
        MyData = new List<SampleData>();

        for (int i = 0; i < 50; i++)
        {
            MyData.Add(new SampleData()
            {
                ID = i,
                Name = "Name " + i.ToString()
            });
        }
    }
}

Planned
Last Updated: 23 Jul 2020 19:14 by ADMIN
Scheduled for 2.17.0
Created by: Vic
Comments: 1
Category: Scheduler
Type: Bug Report
1
When the view modes options (Month, day, week, etc...) is collapsed and the arrow is clicked, the drop menu shows behind the main scheduler window.
Unplanned
Last Updated: 21 Jul 2020 09:36 by ADMIN
My column data remains in the wrong order when column virtualization is enabled. Without column virtualization the issue does not exist.
Completed
Last Updated: 15 Jul 2020 13:42 by ADMIN
Release 2.16.0
Created by: mtrejo30
Comments: 5
Category: UI for Blazor
Type: Bug Report
3

 

This error appears after update 15, in 14.1 it works correctly.

 

ADMIN EDIT:

This error occurs from the FilterMode set to FilterRow. As a workaround, until the fix is implemented, you could use the FilterMenu instead.

 

Regards

 

 

blazor.server.js:15 [2020-06-30T23:44:51.768Z] Error: System.ArgumentOutOfRangeException: Index was out of range. Must be non-negative and less than the size of the collection. (Parameter 'index')
   at System.Collections.Generic.List`1.get_Item(Int32 index)
   at Telerik.Blazor.Components.Grid.GridCellBase`1.get_Column()
   at Telerik.Blazor.Components.Grid.GridCellBase`1.get_BoundColumn()
   at Telerik.Blazor.Components.Grid.GridFilterCell`1.get_BoundColumnFilterCellTemplate()
   at Telerik.Blazor.Components.Grid.GridFilterCell`1.BuildRenderTree(RenderTreeBuilder __builder)
   at Microsoft.AspNetCore.Components.ComponentBase.<.ctor>b__6_0(RenderTreeBuilder builder)
   at Microsoft.AspNetCore.Components.Rendering.ComponentState.RenderIntoBatch(RenderBatchBuilder batchBuilder, RenderFragment renderFragment)
   at Microsoft.AspNetCore.Components.RenderTree.Renderer.RenderInExistingBatch(RenderQueueEntry renderQueueEntry)
   at Microsoft.AspNetCore.Components.RenderTree.Renderer.ProcessRenderQueue()

 

 

Completed
Last Updated: 15 Jul 2020 13:14 by ADMIN
Release 2.16.0
This worked in 2.12.0, but not later and in the current latest 2.15.0 - as per https://docs.telerik.com/blazor-ui/components/grid/selection/overview#editing-modes
1 2 3 4 5 6