Completed
Last Updated: 16 May 2024 20:05 by ADMIN

https://docs.telerik.com/blazor-ui/components/grid/selection/multiple#two-way-binding-of-selecteditems

Click the Preview button to load the example. Notice that the 3rd, 4th, and 5th rows are programmatically selected in the OnInitialized() method. Now, if you hold down the Shift key and click on the 6th row, instead of having the 3rd through 6th rows selected, we get the 1st through 6th row selected.

By design, the Shift + Click shortcut starts the selection from the last clicked row. If no click has taken place, the selection always starts from the first row. How to customize this?

For reference in Angular: https://www.telerik.com/kendo-angular-ui-develop/components/grid/api/SelectionDirective/

Completed
Last Updated: 23 Nov 2023 13:17 by ADMIN
Release 5.1.0 (31 Jan 2024) (R1 2024)
I am using the Drag'N'Drop functionality of the Blazor TreeList and since the update to version 5.0.0 I cannot determine the destination component anymore, because the event argument parameter "DestinationComponentId" is always empty. I have assigned the ID of my TreeList components and everything worked well with version 4.6.0.

It does not matter whether I drag Items around within the same component or try to move them to another TreeList. The parameter is also empty when I try to drag items from a Grid to a TreeList.
Completed
Last Updated: 06 Dec 2022 09:38 by ADMIN
Release 4.0.0 (18 Jan 2023) (R1 2023)
Created by: Huy
Comments: 0
Category: TreeList
Type: Bug Report
1

Columns, which are added to the TreeList after the initial load, are not resizable.

I'm working on TreeList. Some of my columns will be rendered after the initial loading. I checked the code, seems you just set up column render right after the first time TreeList Header rendered. Mean the columns that will be rendered after the first-render time will not be resizable.

Completed
Last Updated: 23 Sep 2022 07:30 by ADMIN
Release 3.6.1 (26 Sep 2022)
Created by: Huy
Comments: 0
Category: TreeList
Type: Bug Report
1

Hello,

The scenario is:

  1. Some filters are applied in OnStateInit
  2. The user clears the filters from the Clear button in the filter menu.
  3. The user opens the filter menu again and the checkboxes and textboxes look like the filters are still applied.

Test page: https://blazorrepl.telerik.com/cmasmAvk52l6Xckn02

This is a regression that occurred in version 3.2.0.

All of the above applies to the Grid component as well.

Completed
Last Updated: 21 Mar 2022 13:09 by ADMIN
Release 3.2.0

I am using TreeList and a custom template on a column to display user avatar. I also need to sort and filter on this column. However when combine all of these features (sort and filter) on a template column, it doesn't work. There are 2 scenarios:

- When enable sort, the filtering works

- When disable sort, the filtering doesnt work

Is there any work around solution for this? I am using UI for Blazor 3.0.1

My snippet

https://blazorrepl.telerik.com/mQuxlWkD32B5eGay33
Completed
Last Updated: 14 Nov 2023 06:19 by ADMIN

Hello,

Here is your code of the example "how to load hierarchical data on demand" with the option FilterMode = "@ TreeListFilterMode.FilterMenu"
As you can see if we click on a node the whole hierarchy disappears. if you remove this option all work fine

 

@* this sample shows how to load hierarchical data on demand and one way of handling no data being returned. Depending on your models and data logic you may have to tweak some checks, review the code comments for details.

*@

<TelerikTreeList Data="@Data"
                 ItemsField="@(nameof(Employee.DirectReports))"
                 HasChildrenField="@(nameof(Employee.HasChildren))"
                 OnExpand="@OnExpandHandler"
                 Pageable="true" Width="550px" Height="400px" FilterMode="@TreeListFilterMode.FilterMenu" >
    <TreeListColumns>
        <TreeListColumn Field="Name" Expandable="true" Width="220px" />
        <TreeListColumn Field="HireDate" Width="120px" />
    </TreeListColumns>
</TelerikTreeList>

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

    // load on demand through the event
    async Task OnExpandHandler(TreeListExpandEventArgs args)
    {
        Employee item = args.Item as Employee;
        if (item.HasChildren && // it is marked as having children
            (item.DirectReports == null || item.DirectReports.Count == 0) // there are no child items
            )
        {
            // request data
            var children = await GetChildren(item);

            if (children.Count > 0)
            {
                // child items exist - add them to the current item
                item.DirectReports = children;
            }
            else
            {
                // no nested data - hide the expand arrow
                item.HasChildren = false;
            }
        }
    }

    async Task<List<Employee>> GetChildren(Employee itm)
    {
        await Task.Delay(400); // simulate delay. Remove for a real app

        List<Employee> data = new List<Employee>();

        // to showcase an example of when no actual child items are returned
        // we will check for too long nesting chain with this simpe logic
        if (itm.Name.LastIndexOf("Child of") < 15)
        {
            data.Add(new Employee
            {
                Name = "Child of " + itm.Name,
                HasChildren = true
            });
        }

        return await Task.FromResult(data);
    }

    // sample model

    public class Employee
    {
        // hierarchical data collections
        public List<Employee> DirectReports { get; set; }
        public bool HasChildren { get; set; }

        // data fields for display
        public string Name { get; set; }
        public DateTime HireDate { get; set; }
    }

    // initial data generation

    protected override async Task OnInitializedAsync()
    {
        List<Employee> data = new List<Employee>();
        for (int i = 0; i < 6; i++)
        {
            data.Add(new Employee
            {
                Name = $"root: {i}",
                HireDate = DateTime.Now.AddYears(-i),
                HasChildren = true
            });
        }

        // mark an item as non-expandable (not having children)
        data[1].HasChildren = false;
        data[1].Name += "(not expandable) ";

        Data = data;
    }
}
Completed
Last Updated: 13 Nov 2023 13:25 by ADMIN
Release 5.0.0 (15 Nov 2023) (R1 PI1)
Created by: MaslovRG
Comments: 5
Category: TreeList
Type: Feature Request
4
It would be nice to have the same capabilities for working with TreeList columns as in the ColumnMenu for Grid. Espesially columns chooser. 
Completed
Last Updated: 15 Feb 2022 20:37 by ADMIN
Release 3.1.0
Created by: Jack
Comments: 5
Category: TreeList
Type: Feature Request
8
Need an OnRowDoubleClick event for editing purposes.
Completed
Last Updated: 01 Dec 2020 08:00 by ADMIN

If I pass XField parameters with a "null" value, it throws "ArgumentNullException: Value cannot be null. (Parameter 'name')" because it thinks the value is set, but apparently it does check if it's "null" before trying to "GetProperty".

 

Example, if any of these XField properties are null, it will throw the Exception

<TelerikTreeList Data="@Data"
                 IdField="@IdField"
                 ParentIdField="@ParentIdField"
                 HasChildrenField="@HasChildrenField"
                 ItemsField="@ItemsField">...</TelerikTreeList>

 

There should be a null check to ignore the use of that property in case it's null, otherwise, my code will need to be something like

 

@if (HasChildrenField != null && ItemsField != null)
{
    <TelerikTreeList Data="@Data"
                     IdField="@IdField"
                     ParentIdField="@ParentIdField"
                     HasChildrenField="@HasChildrenField"
                     ItemsField="@ItemsField">...</TelerikTreeList>
}
else if (HasChildrenField != null)
{
    <TelerikTreeList Data="@Data"
                     IdField="@IdField"
                     ParentIdField="@ParentIdField"
                     HasChildrenField="@HasChildrenField">...</TelerikTreeList>
}
else if (ItemsField != null)
{
    <TelerikTreeList Data="@Data"
                     IdField="@IdField"
                     ParentIdField="@ParentIdField"
                     ItemsField="@ItemsField">...</TelerikTreeList>
}

else

{

    <TelerikTreeList Data="@Data"
                     IdField="@IdField"
                     ParentIdField="@ParentIdField">...</TelerikTreeList>

}


Which isn't good.

 

At least "HasChildrenField" and "ItemsField" should have that check because it isn't a required parameter to have property for the TelerikTreeList  to work.

 

Error Stack

 

ArgumentNullException: Value cannot be null. (Parameter 'name')

  • System.Type.GetProperty(string name, BindingFlags bindingAttr)

  • System.Type.GetProperty(string name)

  • Telerik.Blazor.Extensions.ReflectionExtensions.GetPropertyValue(object target, string propertyName)

  • Telerik.Blazor.Data.TelerikTreeListDataSource<TItem>.CreateTreeListItem(TItem item, IEnumerable<TreeListItem<TItem>> childItems)

  • Telerik.Blazor.Data.TelerikTreeListDataSource<TItem>.GetItems(IEnumerable<TItem> data)

  • Telerik.Blazor.Data.TelerikTreeListDataSource<TItem>.BuildTree(IEnumerable<TItem> sourceData)

  • Telerik.Blazor.Data.TelerikTreeListDataSource<TItem>.InitData(IEnumerable<TItem> sourceData)

  • Telerik.Blazor.Data.TelerikTreeListDataSource<TItem>.ProcessData(IEnumerable data)

  • Telerik.Blazor.Components.Common.DataBoundComponent<TItem>.ProcessDataInternal()

  • Telerik.Blazor.Components.Common.DataBoundComponent<TItem>.OnParametersSetAsync()

  • Telerik.Blazor.Components.TelerikTreeList<TItem>.<>n__0()

  • Telerik.Blazor.Components.TelerikTreeList<TItem>.OnParametersSetAsync()

  • Microsoft.AspNetCore.Components.ComponentBase.CallStateHasChangedOnAsyncCompletion(Task task)

  • Microsoft.AspNetCore.Components.ComponentBase.RunInitAndSetParametersAsync()

  • Microsoft.AspNetCore.Components.Rendering.HtmlRenderer.HandleException(Exception exception)

  • Microsoft.AspNetCore.Components.RenderTree.Renderer.AddToPendingTasks(Task task)

  • Microsoft.AspNetCore.Components.Rendering.ComponentState.SetDirectParameters(ParameterView parameters)

  • Microsoft.AspNetCore.Components.RenderTree.RenderTreeDiffBuilder.InitializeNewComponentFrame(ref DiffContext diffContext, int frameIndex)

  • Microsoft.AspNetCore.Components.RenderTree.RenderTreeDiffBuilder.InitializeNewSubtree(ref DiffContext diffContext, int frameIndex)

  • Microsoft.AspNetCore.Components.RenderTree.RenderTreeDiffBuilder.InsertNewFrame(ref DiffContext diffContext, int newFrameIndex)

  • Microsoft.AspNetCore.Components.RenderTree.RenderTreeDiffBuilder.AppendDiffEntriesForRange(ref DiffContext diffContext, int oldStartIndex, int oldEndIndexExcl, int newStartIndex, int newEndIndexExcl)

  • Microsoft.AspNetCore.Components.RenderTree.RenderTreeDiffBuilder.ComputeDiff(Renderer renderer, RenderBatchBuilder batchBuilder, int componentId, ArrayRange<RenderTreeFrame> oldTree, ArrayRange<RenderTreeFrame> newTree)

  • Microsoft.AspNetCore.Components.Rendering.ComponentState.RenderIntoBatch(RenderBatchBuilder batchBuilder, RenderFragment renderFragment)

  • Microsoft.AspNetCore.Components.RenderTree.Renderer.RenderInExistingBatch(RenderQueueEntry renderQueueEntry)

  • Microsoft.AspNetCore.Components.RenderTree.Renderer.ProcessRenderQueue()

  • Microsoft.AspNetCore.Components.Rendering.HtmlRenderer.HandleException(Exception exception)

  • Microsoft.AspNetCore.Components.RenderTree.Renderer.ProcessRenderQueue()

  • Microsoft.AspNetCore.Components.RenderTree.Renderer.ProcessPendingRender()

  • Microsoft.AspNetCore.Components.RenderTree.Renderer.AddToRenderQueue(int componentId, RenderFragment renderFragment)

  • Microsoft.AspNetCore.Components.ComponentBase.StateHasChanged()

  • Microsoft.AspNetCore.Components.ComponentBase.CallOnParametersSetAsync()

  • Microsoft.AspNetCore.Components.ComponentBase.RunInitAndSetParametersAsync()

  • Microsoft.AspNetCore.Components.Rendering.HtmlRenderer.HandleException(Exception exception)

  • Microsoft.AspNetCore.Components.RenderTree.Renderer.AddToPendingTasks(Task task)

  • Microsoft.AspNetCore.Components.Rendering.ComponentState.SetDirectParameters(ParameterView parameters)

  • Microsoft.AspNetCore.Components.RenderTree.Renderer.RenderRootComponentAsync(int componentId, ParameterView initialParameters)

  • Microsoft.AspNetCore.Components.Rendering.HtmlRenderer.CreateInitialRenderAsync(Type componentType, ParameterView initialParameters)

  • Microsoft.AspNetCore.Components.Rendering.HtmlRenderer.RenderComponentAsync(Type componentType, ParameterView initialParameters)

  • Microsoft.AspNetCore.Components.Rendering.RendererSynchronizationContext+<>c__11<TResult>+<<InvokeAsync>b__11_0>d.MoveNext()

  • Microsoft.AspNetCore.Mvc.ViewFeatures.StaticComponentRenderer.PrerenderComponentAsync(ParameterView parameters, HttpContext httpContext, Type componentType)

  • Microsoft.AspNetCore.Mvc.ViewFeatures.ComponentRenderer.PrerenderedServerComponentAsync(HttpContext context, ServerComponentInvocationSequence invocationId, Type type, ParameterView parametersCollection)

  • Microsoft.AspNetCore.Mvc.ViewFeatures.ComponentRenderer.RenderComponentAsync(ViewContext viewContext, Type componentType, RenderMode renderMode, object parameters)

  • Microsoft.AspNetCore.Mvc.TagHelpers.ComponentTagHelper.ProcessAsync(TagHelperContext context, TagHelperOutput output)

  • Microsoft.AspNetCore.Razor.Runtime.TagHelpers.TagHelperRunner.<RunAsync>g__Awaited|0_0(Task task, TagHelperExecutionContext executionContext, int i, int count)

Completed
Last Updated: 27 Oct 2023 13:42 by ADMIN
Release 5.0.0 (15 Nov 2023) (R1 PI1)
When I add a child to a node in the TreeList it would not render until I expand or collapse that node.
Completed
Last Updated: 22 Nov 2021 15:55 by ADMIN
Release 2.30.0

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: 29 Jan 2021 09:00 by ADMIN
Release 2.21.0
Created by: Jurgen
Comments: 6
Category: TreeList
Type: Feature Request
3
I now have a treelist with a few thousand items, but the filtering takes a few seconds, and halfway there is a refresh with partial results.

Now the users are complaining that they do not really know when the treelist is done with filtering.
Completed
Last Updated: 26 Jan 2024 14:28 by ADMIN
Release 2.18.0
Created by: Jurgen
Comments: 6
Category: TreeList
Type: Feature Request
10

I would like to start the tree grid with all rows collapsed. At the moment I can do this only through load on demand.

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

Completed
Last Updated: 09 May 2024 12:23 by ADMIN
Release 2024 Q2 (May)
Created by: Wei
Comments: 8
Category: TreeList
Type: Feature Request
40
I would like the TreeList to support row virtualization. It will be useful when working with large data.