Is there a plan to fix this in the long term? The "work-around" listed in your documentation, Configure the Render Mode per Page found at https://docs.telerik.com/blazor-ui/getting-started/web-app#configure-the-render-mode-per-page technically functions as the root component error goes away and site starts working...
However, it misses the bigger issue in that it now loads the entire page including all of the layout code and components, re-executing them as well... put some components in the TelerikLayout and add break points to the OnInit functions to see what I am referring to. It will now do this for every single page in application now...
So... to my initial question... what is the plan to fix/address the TelerikRootComponent in the multiple rendering mode world that is .NET 8 now?
I will say it looks like the Blazor team added a new concept of using builder.Services.AddCascadingValues() to address this problem, I have used it with our internal RootComponent to fix this same concept with our internal code... thoughts?
builder.Services.AddTelerikCascadingParameters(); is referenced at url below:
https://github.com/dotnet/aspnetcore/issues/50724 by SteveSandersonMS, I realize he was just throwing out an idea, the above line of code doesn't actually exist to my knowledge, at least not yet... :)
Thanks in advance!

I'm using telerik grid blazor and datatable as datasource properties like filtering,sorting are working but when i enable grouping it loads and does not provide me a grouping data.
Is there any solution for this?
I need to get the node number of the tree view. I know there is a TreeItem that has the Level property but I can't figure out how to get it. I tried using an Item Template and that is where I am stuck. I couldn't figure out how to get the item info.
<div>This is the tree view <br />
<TelerikTreeView
Data="TreeViewList">
<TreeViewBindings>
<TreeViewBinding
ParentIdField="ParentId"
IdField="Id"
HasChildrenField="HasChildren"
TextField="Name">
</TreeViewBinding>
</TreeViewBindings>
</TelerikTreeView>
</div>Hello,
I'm trying to figure out how does the NuGet API Key works for Telerik feed when it comes to security. I created an API Key on my account for the NuGet feed. I used it in Visual Studio via NuGet.config file method. Everything was working fine. Then I deleted the API Key from my account. I made the test again and everything seems to still work in Visual Studio.
I was under the impression that the key should be invalidated and stop working after I deleted it. How does it work exactly so I can make sure I can use it in a safe way? Does the key still work after deletion until it's expiration date?

Telerik + dotnet 8 is really annoying.
You cant mark a component as interactive, because that requires a telerikrootcomponent, and you cant put a telerikrootcomponent at the top level because then the specific component cant find the telerikrootcomponent.
And the docs https://docs.telerik.com/blazor-ui/troubleshooting/general-issues#wrong-popup-position provide no workaround at all.



Hi,
I am trying to setup the ability for users to delete a row in a <TelerikGrid>
<TelerikGrid
Data="@(Results)"
EnableLoaderContainer="true"
Pageable="true"
Sortable="true"
Resizable="true"
FilterMode="GridFilterMode.FilterMenu"
PageSize="15"
SelectionMode="GridSelectionMode.Multiple"
SortMode="@SortMode.Single"
Height="70vh"
@ref="@GridRef"
><GridColumn Title="Delete" Width="5vh">
<Template>
@if (context is MyModel model)
{
<div @key="@model.UniqueId">
<div class="icon-container" @onclick="@(() => HandleDeleteClicked(model))">
<i class="far fa-trash font-icon-large"></i>
</div>
</div>
}
</Template>
</GridColumn> private async Task HandleDeleteClicked(MyModel model)
{
Results.Remove(model);
}
This part all works fine, it removes the row, and since 'Results' is an 'ObservableCollection<MyModel>' it updates the UI, perfect.
The problem is I can't seem to get it so that every cell is not re-rendering/re-created when the delete happens.
I have a column that has a sub-component inside it...
<GridColumn Title="MyCustomColumn" Field="@nameof(MyModel.MyField)">
<Template>
@{
@if (context is MyModel result)
{
<div @key="@result.UniqueId">
@{
<MyCustomComponent></MyCustomComponent>
}
</div>
}
}
</Template>
</GridColumn>'MyCustomComponent' has an expensive API call in the 'OnParametersSetAsync' lifecycle method. Even though I have the @key attribute setup it seems to re-create the 'MyCustomComponent' for every row anytime a single row is deleted.
// MyCustomComponent.razor.cs
private Guid? ComponentInstanceId { get; set; }
protected override Task OnInitializedAsync()
{
ComponentInstanceId = Guid.NewGuid();
return base.OnInitializedAsync();
}
The Id I am using for the key I can confirm is not changing.
Is there a better way to help the grid know when it needs to re-create the cells?
Thanks!

Hi,
This is my second Validation struggle this week.
I have a TelerikGrid displaying my Dtos.
This grid uses a FluentValidator.
I want to trigger the Validator for a specific DTO when the user clicks on a button on the row displaying the DTO.
The Validator rules are rather complex, let's say that if it is invalid when the user clicks the button, several grid columns from the row would need to turn red
My method bound to the button does trigger the validator correctly and I can see when it fails (the ValidationResult contains errors).
But none of the invalid controls are then displayed as having errors (red with errors).
Do I have to implement the logic manually?
I have to say that I do not have the slightest idea in which direction I should head.
My minimal current code looks like this:
<TelerikGrid @ref="@_gridRef"
TItem="MyDto"
OnRead="@ReadItems">
<GridSettings>
<GridValidationSettings>
<ValidatorTemplate>
<FluentValidationValidator Validator=@Validator />
</ValidatorTemplate>
</GridValidationSettings>
</GridSettings>
<GridToolBarTemplate> [...] </GridToolBarTemplate>
<DetailTemplate Context="ctx">
[...] /* We will talk about how to flag this DetailTemplate's fields as arror later*/
</DetailTemplate>
<GridColumns>
<GridColumn Field="@(nameof(MyDto.MyProp))" Title="..."/>
<GridColumn Field="@(nameof(MyDto.MyProp2))" Title="..."/>
<GridColumn Field="@(nameof(MyDto.MyProp3))" Title="..."/>
<GridColumn Title="Action"
<Template>
<TelerikButton OnClick="@(() => Update(context as MyDto))" Title="Title" />
</Template>
</GridColumn>
[...]
</GridColumns>
</TelerikGrid>
In this case I would like let's say GridColumn 2 and 3 to be displayed as invalid.
My button Method code is as follows:
private async Task Update(MyDto myDto)
{
ValidationResult result = Validator.Validate(myDto);
if (!result.Errors.Any())
{
await myService.Update(myDto);
await RefreshTable();
}
//else
//{
// await Task.Delay(50);
// StateHasChanged();
//}
}