Unplanned
Last Updated: 30 Sep 2020 10:09 by ADMIN
The Grid throws on Dispose when there is a Tabstip also on the same razor page. When there is not Tabstrip the Grid does not throw this exception. 
Unplanned
Last Updated: 30 Sep 2020 06:57 by ADMIN
When I place a Chart in a small container, for example, a div, the labels are cut off and thus unreadable.
Unplanned
Last Updated: 29 Sep 2020 16:29 by ADMIN
Scheduled for 2.18.0
When I am loading child items on demand they will not be rendered.
Unplanned
Last Updated: 28 Sep 2020 06:51 by ADMIN

I have a page with ButtonGroup. When I run the application, navigate to that page, refresh it using F5 I see the following exceptions:

System.AggregateException: Exceptions were encountered while disposing components. (Cannot process pending renders after the renderer has been disposed.
Object name: 'Renderer'.) (Cannot process pending renders after the renderer has been disposed.
Object name: 'Renderer'.)
 ---> System.ObjectDisposedException: Cannot process pending renders after the renderer has been disposed.
Object name: 'Renderer'.
   at Microsoft.AspNetCore.Components.RenderTree.Renderer.ProcessPendingRender()
   at Microsoft.AspNetCore.Components.Server.Circuits.RemoteRenderer.ProcessPendingRender()
   at Microsoft.AspNetCore.Components.RenderTree.Renderer.AddToRenderQueue(Int32 componentId, RenderFragment renderFragment)
   at Microsoft.AspNetCore.Components.ComponentBase.StateHasChanged()
   at Telerik.Blazor.Components.Common.BaseComponent.StateHasChanged()
   at Telerik.Blazor.Components.TelerikButtonGroup.Telerik.Blazor.Components.ButtonGroup.IButtonContainer.RemoveButton(ButtonGroupButtonBase button)
   at Telerik.Blazor.Components.ButtonGroup.ButtonGroupButtonBase.Dispose()
   at Microsoft.AspNetCore.Components.Rendering.ComponentState.Dispose()
   at Microsoft.AspNetCore.Components.RenderTree.Renderer.Dispose(Boolean disposing)
   --- End of inner exception stack trace ---
 ---> (Inner Exception #1) System.ObjectDisposedException: Cannot process pending renders after the renderer has been disposed.
Object name: 'Renderer'.
   at Microsoft.AspNetCore.Components.RenderTree.Renderer.ProcessPendingRender()
   at Microsoft.AspNetCore.Components.Server.Circuits.RemoteRenderer.ProcessPendingRender()
   at Microsoft.AspNetCore.Components.RenderTree.Renderer.AddToRenderQueue(Int32 componentId, RenderFragment renderFragment)
   at Microsoft.AspNetCore.Components.ComponentBase.StateHasChanged()
   at Telerik.Blazor.Components.Common.BaseComponent.StateHasChanged()
   at Telerik.Blazor.Components.TelerikButtonGroup.Telerik.Blazor.Components.ButtonGroup.IButtonContainer.RemoveButton(ButtonGroupButtonBase button)
   at Telerik.Blazor.Components.ButtonGroup.ButtonGroupButtonBase.Dispose()
   at Microsoft.AspNetCore.Components.Rendering.ComponentState.Dispose()
   at Microsoft.AspNetCore.Components.RenderTree.Renderer.Dispose(Boolean disposing)

Unplanned
Last Updated: 25 Sep 2020 11:59 by ADMIN

If I add an await-ed call in the OnRowClick handler, then I cannot alter the grid state later in the code. It only works if the method is called again (e.g., a second click on the same row).

A workaround is to use syncrhonous code (remove the await call):

@inject IJSRuntime JsInterop

<TelerikGrid Data="@salesTeamMembers" OnRowClick="@OnRowClickHandler" @ref="@GridRef">
    <DetailTemplate>
        @{
            var employee = context as MainModel;
            <TelerikGrid Data="employee.Orders" Pageable="true" PageSize="5">
                <GridColumns>
                    <GridColumn Field="OrderId"></GridColumn>
                    <GridColumn Field="DealSize"></GridColumn>
                </GridColumns>
            </TelerikGrid>
        }
    </DetailTemplate>
    <GridColumns>
        <GridColumn Field="Id"></GridColumn>
        <GridColumn Field="Name"></GridColumn>
    </GridColumns>
</TelerikGrid>

@code {
    List<MainModel> salesTeamMembers { get; set; }
    TelerikGrid<MainModel> GridRef { get; set; }

    async Task OnRowClickHandler(GridRowClickEventArgs args) {
        // After adding this line, it now requires a double click when the InvokeAsync call uses "await"
         var width = JsInterop.InvokeAsync<int>("getWidth");


        var model = args.Item as MainModel;
        int index = salesTeamMembers.IndexOf(model);
        //todo: you may want to take paging into account for example, or use js interop to get the index of the row based on contents from it like id
        if (index > -1) {
            var state = GridRef.GetState();
            state.ExpandedRows = new List<int> { index };

            await GridRef.SetState(state);
        }

    }


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

    private List<MainModel> GenerateData() {
        List<MainModel> data = new List<MainModel>();
        for (int i = 0; i < 5; i++) {
            MainModel mdl = new MainModel { Id = i, Name = $"Name {i}" };
            mdl.Orders = Enumerable.Range(1, 15).Select(x => new DetailsModel { OrderId = x, DealSize = x ^ i }).ToList();
            data.Add(mdl);
        }
        return data;
    }

    public class MainModel {
        public int Id { get; set; }
        public string Name { get; set; }
        public List<DetailsModel> Orders { get; set; }
    }

    public class DetailsModel {
        public int OrderId { get; set; }
        public double DealSize { get; set; }
    }
}

Unplanned
Last Updated: 24 Sep 2020 15:12 by ADMIN
Created by: Jan Hindrik
Comments: 0
Category: Grid
Type: Bug Report
2

Sample reproducible with workaround (to initialize the data source so it is not null)

<TelerikGrid Data=@GridData Pageable="true" Height="300px">
    <GridColumns>
        <GridColumn Field="@(nameof(Employee.EmployeeId))">
            <FooterTemplate>
                some footer
            </FooterTemplate>
        </GridColumn>
        <GridColumn Field=@nameof(Employee.Salary) Title="Salary">
        </GridColumn>
        <GridColumn Field=@nameof(Employee.Name)>
        </GridColumn>
    </GridColumns>
</TelerikGrid>

@code {
    public List<Employee> GridData { get; set; } // = new List<Employee>(); // workaround

    public class Employee
    {
        public int EmployeeId { get; set; }
        public string Name { get; set; }
        public decimal Salary { get; set; }
    }
}

Unplanned
Last Updated: 23 Sep 2020 12:54 by ADMIN
1. Replace MainLayout with TelerikDrawer https://github.com/telerik/blazor-ui/tree/master/drawer/template
2. Place simple Grid with detail template https://docs.telerik.com/blazor-ui/components/grid/hierarchy
3. Bug - Latest column from parent grid becomes disabled for sorting.

<TelerikGrid Data="salesTeamMembers" @ref="Grid" Sortable="true" FilterMode=@GridFilterMode.FilterMenu Height="780px">
    <DetailTemplate>
           <span>Any template</span>
        </DetailTemplate>
    <GridColumns>
        <GridColumn Field="Id"></GridColumn>
        <GridColumn Field="Name" ></GridColumn>
        <GridColumn Field="Order"></GridColumn>
    </GridColumns>
</TelerikGrid>

If remove detail tempate, all columns becomes availavle for sorting as expected
Unplanned
Last Updated: 17 Sep 2020 14:57 by ADMIN

Hello,

I am using a TelerikTreeList with an EditorTemplate with a TextBox for one of it's columns.

If i am adding a new object to the TreeList and begin typing in the cell with the EditorTemplate the cell is losing focus more or less on keystroke. (If you're typing quite fast it might be 2 or 3 characters before it loses focus.)

If i am editing an existing object the concerned cell doesn't lose focus.

If i change the binding of the TextBox in the EditorTemplate from "bind-Value" to "Value" it is working but i want to use the two-way-binding of the TextBox.

I have a similar UI with a grid instead of TreeList which is working fine with the TextBox in the EditorTemplate.

I Attached an example project to reproduce the problem.

I tested with google chrome, mozilla firefox and microsoft edge and i had the same problem in alle 3 browsers.

 

best regards

Unplanned
Last Updated: 17 Sep 2020 10:35 by ADMIN

In Firefox, the popup window is not closed when the ComboBox is disabled from code.

Reproduction code:

Selected value: @selectedValue
<br />

<TelerikComboBox Data="@myComboData"
                 TextField="MyTextField"
                 ValueField="MyValueField"
                 Value="selectedValue"
                 ValueChanged="@((int value) => ValueChangedHandler(value))"
                 Placeholder="Select an item..."
                 ClearButton="true"
                 Enabled="@isEnabled"
                 Filterable="true">
</TelerikComboBox>

@code {
    public bool isEnabled { get; set; } = true;
    IEnumerable<MyDdlModel> myComboData = Enumerable.Range(1, 20).Select(x => new MyDdlModel { MyTextField = "item " + x, MyValueField = x });

    int selectedValue { get; set; } = 3; //usually the current value should come from the model data

    public async Task ValueChangedHandler(int value)
    {
        isEnabled = false;
        await Task.Delay(4000); //simulate network delay

        selectedValue = value;

        isEnabled = true;
    }

    //in a real case, the model is usually in a separate file
    //the model type and value field type must be provided to the dropdpownlist
    public class MyDdlModel
    {
        public int MyValueField { get; set; }
        public string MyTextField { get; set; }
    }
}

Unplanned
Last Updated: 16 Sep 2020 06:49 by ADMIN
I have a ListView, bound to ObservableCollection and it stays in Edit mode, the Save command does not work and there is no way to save the item.
Unplanned
Last Updated: 15 Sep 2020 17:25 by ADMIN

I have a numeric text box that is bound to a nullable int. There is also a combo box on the page that will auto set the value and disable the numeric text box if certain values are selected. as follows:



<TelerikComboBox Data="@TareTypes" TextField="Name" ValueField="Id" ValueExpression="@(() => Material.TareTypeId)" ValueChanged="@((int? e) => TareTypeChanged(e))" Width="200px" Placeholder="Tare Type" ClearButton="true"></TelerikComboBox>

<TelerikNumericTextBox @bind-Value="@Material.TareWeight" Arrows="false" Enabled="@tareWeightEnabled" ></TelerikNumericTextBox>

and the code...


private void TareTypeChanged(int? tareTypeId)
        {
            Material.TareTypeId = tareTypeId;
            tareWeightEnabled = true;
            if (tareTypeId > 0)
            {
                var tareTypeWeight = TareTypes.Single(t => t.Id == tareTypeId).Weight;
                if (tareTypeWeight.HasValue)
                {
                    Material.TareWeight = tareTypeWeight;
                    tareWeightEnabled = false;
                    editContext.NotifyFieldChanged(editContext.Field("TareWeight"));
                }
            }
        }

the following steps should reproduce the problem

 

  1. enter a value in the numeric text box and then clear it out
  2. select a value from the combo box that auto sets the numeric text box value and disables it
  3. select a value from the combo box that re-enables the text box. At this point the value is still visible in the text box (as it should be) and the text box is enabled
  4. Focus in the text box. this causes the number to disappear. it's as if the number was just a place holder which clears out when you focus on the control.
Unplanned
Last Updated: 01 Sep 2020 12:37 by ADMIN
When I place a DropDownList inside a Modal Window and run it in Safari there is a flicker in the UI when the dropdown is expanded.
Unplanned
Last Updated: 31 Aug 2020 10:19 by ADMIN

If i collapse/expand any item of treeview then each item of collapsed/expanded branch will be rendered twice.

Clicking in or away from the treeview re-renders all nodes too.

Unplanned
Last Updated: 27 Aug 2020 14:45 by ADMIN
I have a TreeList, bound to an ObservableCollection data source. When I try to add new children the component stays in Create mode even after I click on the Update button.
Unplanned
Last Updated: 26 Aug 2020 19:26 by ADMIN
1. Go to the last page

1. Click the Previous page button in the pager


<TelerikGrid Data="@MyData" Pageable="true" Navigable="true">
    <GridColumns>
        <GridColumn Field="ID"></GridColumn>
        <GridColumn Field="TheName" Title="Employee Name"></GridColumn>
    </GridColumns>
</TelerikGrid>

@code {
    public IEnumerable<object> MyData = Enumerable.Range(1, 50).Select(x => new { ID = x, TheName = "name " + x });
}
Unplanned
Last Updated: 24 Aug 2020 13:07 by ADMIN
Created by: Torsten
Comments: 1
Category: Grid
Type: Bug Report
1

Select one or more rows

Right click another of the rows (there is code in the OnContextMenu handler that changes the selected items to the currently clicked row)

<TelerikContextMenu @ref="@ContextMenuRef" Data="@MenuItems" OnClick="@((MenuItem item) => OnItemClick(item))"></TelerikContextMenu>

<TelerikGrid Data=@GridData
             @ref="Grid"
             SelectionMode="GridSelectionMode.Multiple"
             @bind-SelectedItems="@SelectedEmployees"
             @bind-Page="@CurrentPage"
             PageSize="@PageSize"
             OnRowContextMenu="OnContextMenu"
             Pageable="true">
    <GridColumns>
        <GridCheckboxColumn />
        <GridColumn Field=@nameof(Employee.EmployeeId) />
        <GridColumn Field=@nameof(Employee.Name) />
        <GridColumn Field=@nameof(Employee.Team) />
    </GridColumns>
</TelerikGrid>

@if (SelectedEmployees != null)
{
    <ul>
        @foreach (Employee employee in SelectedEmployees.OrderBy(e => e.EmployeeId))
        {
            <li>
                @employee.EmployeeId
            </li>
        }
    </ul>}

@code {
    public IEnumerable<Employee> SelectedEmployees { get; set; } = Enumerable.Empty<Employee>();
    TelerikContextMenu<MenuItem> ContextMenuRef { get; set; }
    TelerikGrid<Employee> Grid { get; set; }
    List<MenuItem> MenuItems { get; set; }
    int CurrentPage { get; set; } = 1;
    int PageSize { get; set; } = 5;

    //data binding and sample data
    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
            });
        }

        MenuItems = new List<MenuItem>()
    {
            new MenuItem(){ Text = "Delete", Icon = IconName.Delete, CommandName = "Delete"}
        };
    }

    protected async Task OnItemClick(MenuItem item)
    {
        if (item.Action != null)
        {
            item.Action.Invoke();
        }
        else
        {
            switch (item.CommandName)
            {
                case "Delete":
                    await Task.Delay(1); // do something

                    break;
            }
        }
    }

    protected async Task OnContextMenu(GridRowClickEventArgs args)
    {
        if (!(args.Item is Employee employee))
            return;

        SelectedEmployees = new List<Employee> { employee }; // this does not work

        if (args.EventArgs is MouseEventArgs mouseEventArgs)
        {
            await ContextMenuRef.ShowAsync(mouseEventArgs.ClientX, mouseEventArgs.ClientY);
        }
    }

    public class Employee
    {
        public int EmployeeId { get; set; }
        public string Name { get; set; }
        public string Team { get; set; }
    }

    public class MenuItem
    {
        public string Text { get; set; }
        public string Icon { get; set; }
        public Action Action { get; set; }
        public string CommandName { get; set; }
    }
}

 

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

Unplanned
Last Updated: 21 Aug 2020 07:26 by ADMIN

The null type of operator can cause errors on the backend

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

Unplanned
Last Updated: 20 Aug 2020 12:08 by ADMIN

Try running an editor with content like this:

 

<p>Para 1</p><p><br></p><p>Para 2</p><p><br></p><p>Para 3</p>

 

Now, open the ViewHtml button from the full toolset and Update the content without modifying anything.

The result is that there are more <br> tags in the the empty paragraphs than what we started with, and they are added every time you repeat this process.

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

Unplanned
Last Updated: 17 Aug 2020 15:09 by ADMIN

Clicking the image, and selecting the image button brings up a popup. The "Update" button is not appearing properly (does not occur on other editor popups):

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

Unplanned
Last Updated: 14 Aug 2020 15:57 by ADMIN
Created by: Jaco
Comments: 1
Category: Grid
Type: Bug Report
1

When I enter edit mode for a cell (I used InCell edit mode), the row height decreases.

 

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

1 2 3