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.
Completed
Last Updated: 29 Sep 2020 07:40 by ADMIN
Release 2.17.0
When you close the page, the Window tries to dispose and this causes an exception that you can see in the Output > ASP.NET Core Server window. The exception does not show up in the browser, but shows up in the logs.


WARN  2019-12-17 09:26:16,300 Unhandled exception rendering component: 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 Microsoft.AspNetCore.Components.Rendering.RendererSynchronizationContextDispatcher.InvokeAsync(Action workItem)
   at Microsoft.AspNetCore.Components.ComponentBase.InvokeAsync(Action workItem)
   at Telerik.Blazor.Components.TelerikWindowBase.Refresh()
   at Telerik.Blazor.Components.TelerikWindowBase.Dispose()
   at Microsoft.AspNetCore.Components.Rendering.ComponentState.Dispose()
   at Microsoft.AspNetCore.Components.RenderTree.Renderer.Dispose(Boolean disposing)

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

Completed
Last Updated: 24 Sep 2020 09:44 by ADMIN
Release 2.18.0

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; }
    }
}
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
Completed
Last Updated: 23 Sep 2020 09:27 by ADMIN
Release 2.18.0
Created by: Roy
Comments: 0
Category: UI for Blazor
Type: Bug Report
2
With "System.NullReferenceException : Object reference not set to an instance of an object" coming from TelerikRootComponent.AddFragment(RenderFragment fragment)
Declined
Last Updated: 22 Sep 2020 15:04 by ADMIN

In a Telerik Grid, we had just implemented the new Grid Footer Template.  However, any built-in filtering (filterrow, filtermenu, searchbox) we use now will cause the grid/page to crash when the input we type does not exist for any row in the grid.  If the input we type does exist, the filtering works correctly.  For instance, if wanted to filter the name "John Smith" and a row exists with that name, then that row will be filtered.  If we typed in "John Smithasdf", then the grid crashes and we receive the following message from the DevTools window:

blazor.server.js:19 [2020-09-21T16:58:12.070Z] Error: System.InvalidOperationException: Nullable object must have a value.
   at System.Nullable`1.get_Value()
   at BudgetPak.Pages.User.Budgeting.HeadcountReview.<>c__DisplayClass0_4.<BuildRenderTree>b__43(RenderTreeBuilder __builder4)
   at Microsoft.AspNetCore.Components.Rendering.RenderTreeBuilder.AddContent(Int32 sequence, RenderFragment fragment)
at Telerik.Blazor.Components.Grid.GridFooterCell`1.BuildRenderTree(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()

From the highlighted text, we deduced the issue had to deal with the Grid Footer template.  Not all of our columns are aggregated on the footer row, so we were thinking that's what the "Nullable object must have a value" message meant.  When we removed the Grid Footer template, the filtering worked correctly.  With one of our other grids, we added a temporary footer grid, and the same crash would occur.

Is there a work-around for this?  The footer template otherwise is great, and we would like to use both that and filtering on our grids.  Please let us know if you need any more info.

Thanks,

Steve

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

Completed
Last Updated: 17 Sep 2020 10:55 by ADMIN
Release 2.18.0
I have logic that updates the Data of a dropdownlist (in this case, changes the value of the TextField of a the selected item in the dropdown). After the database update, I fetch the dropdown data anew, and it reflects in the dropdown element, but not in the main element where it is currently shown.
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; }
    }
}

Completed
Last Updated: 16 Sep 2020 16:17 by ADMIN
Release 2.18.0
I am using Chromium Edge and my monitor DPI is set to 125%. I have Virtual Scrolling enabled and when navigating up and down, sometimes, the data does not render, but only the loading indicators.
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.
In Development
Last Updated: 16 Sep 2020 06:10 by ADMIN
Scheduled for 2.18.0
Created by: Jan Hindrik
Comments: 1
Category: Grid
Type: Bug Report
9

If I set grouping in OnStateInit, the GroupFooterTemplate does not have data for the aggregates I have set. If I group manually by dragging a column header, the data is there.

------

ADMIN EDIT: This stems from a framework behavior. The <GridAggregates> tag is a child component of the grid and as such, initializes after the grid. Since there is no event when all such child components are initialized the parent component cannot wait for them before starting to render and thus, it initializes before it can know what aggregates are defined.

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.
Completed
Last Updated: 15 Sep 2020 10:58 by ADMIN
Release 2.18.0
Created by: Danilo
Comments: 1
Category: Grid
Type: Bug Report
7
I want to be able to set its title, and the parameter is missing at this point. It is available for the "standard" TelerikButton.
Declined
Last Updated: 14 Sep 2020 09:47 by ADMIN
Scheduled for 2.17.0

The Chart Tooltip does not render correct values for the data points when the chart is bound to a model, has multiple series and Template is used. The DataItem does not seem to work as expected.

ADMIN EDIT:

If the Chart is bound with Independent Series Binding the FormattedValue will get the correct values.

If the Chart has no Template the correct values for the data points will be displayed

1 2 3 4 5 6