Completed
Last Updated: 17 Nov 2021 15:23 by ADMIN
Release 2.30.0

Hi,

In most of my projects I use the ObjectGraphDataAnnotationsValidator component for validating complex types; and I also use a lot of your components. I've noticed what I *think* might be a clash between this validator and some of your input components. I've built a simple (and crude) example but I think it demonstrates the problem.


In the example code we have a table with 2 cells - in both cells we have an EditForm and 10 TelerikTextArea components. The first cell's EditForm contains a ObjectGraphDataAnnotationsValidator instance and the 2nd cell doesn't. Hopefully when you try to reproduce you will notice a distinct difference in performance with the performance of the 2nd EditForm being great, while the 1st EditForm is quite laggy and gets worse the more items you add.


I'm wondering if there is a clash here between the ObjectGraphDataAnnotationsValidator and the input components or I'm using them incorrectly?


Thanks
Michael.

 

@page "/"

<table width="100%">
    <tr>
        <td width="50%">
            <h3>EditForm with ObjectGraphDataAnnotationsValidator</h3>
            <EditForm Model="Items">
                <ObjectGraphDataAnnotationsValidator />
                @foreach (var item in Items)
                {
                    <div style="display: flex">
                        <TelerikTextArea @bind-Value="item.TextValue" />

                        @if (Items.IndexOf(item) == (Items.Count - 1))
                        {
                            <TelerikButton OnClick="@(() => Items.Add(new DataItem()))">
                                Add
                            </TelerikButton>
                        }
                    </div>
                }
            </EditForm>
        </td>
        <td width="50%">
            <h3>EditForm without ObjectGraphDataAnnotationsValidator</h3>
            <EditForm Model="Items">
                @foreach (var item in Items)
                {
                    <div style="display: flex">
                        <TelerikTextArea @bind-Value="item.TextValue" />

                        @if (Items.IndexOf(item) == (Items.Count - 1))
                        {
                            <TelerikButton OnClick="@(() => Items.Add(new DataItem()))">
                                Add
                            </TelerikButton>
                        }
                    </div>
                }
            </EditForm>
        </td>
    </tr>
</table>

@code {
    protected List<DataItem> Items { get; set; }

    protected override void OnInitialized()
    {
        Items = new List<DataItem>();
        for (var i = 1; i <= 10; i++)
        {
            Items.Add(new DataItem { TextValue = $"This is item number {i}." });
        }
    }

    public class DataItem
    {
        public string TextValue { get; set; }
    }
}
Completed
Last Updated: 14 Nov 2024 09:26 by ADMIN
Release 7.0.0
Created by: MichaƂ
Comments: 3
Category: UI for Blazor
Type: Bug Report
15

When filtering or editing a Grid with enum data, the Name property of their Display parameter is respected.

However, in the initial view mode of the Grid the Name property is not applied and the enum values are rendered regardless of whether or not their Display parameter has a Name property defined.

 

==========

ADMIN EDIT

==========

In the meantime, a workaround you might try is to create a custom method to check whether Display attribute is defined and get and display its Name property, otherwise display the Enum's member name.

You can then use a Template for the column that uses enum data, cast its context to the model you are using and invoke the method on the field containing the enum. The sample below demonstrates how you can achieve this.

@using System.ComponentModel.DataAnnotations
@using System.Reflection

<TelerikGrid Data=@MyData EditMode="@GridEditMode.Inline" Pageable="true" Height="500px"
             OnUpdate="@UpdateHandler" FilterMode="@GridFilterMode.FilterRow">
    <GridColumns>
        <GridColumn Field=@nameof(SampleData.ID) Editable="false" Title="ID" />
        <GridColumn Field=@nameof(SampleData.Name) Title="Name" />
        <GridColumn Field=@nameof(SampleData.Role) Title="Position">       
            <Template>
                @{
                    var currentEmployee = context as SampleData;
                    var currentRole = GetDisplayName(currentEmployee.Role);                        
                }

                @currentRole
            </Template>
        </GridColumn>
        <GridCommandColumn>
            <GridCommandButton Command="Save" Icon="save" ShowInEdit="true">Update</GridCommandButton>
            <GridCommandButton Command="Edit" Icon="edit">Edit</GridCommandButton>
        </GridCommandColumn>
    </GridColumns>
</TelerikGrid>

@code {
    //custom method to check whether Display attribute is defined and get and display its Name property, otherwise display the Enum's member name
    public string GetDisplayName(Enum val)
    {
        return val.GetType()
                  .GetMember(val.ToString())
                  .FirstOrDefault()
                  ?.GetCustomAttribute<DisplayAttribute>(false)
                  ?.Name
                  ?? val.ToString();
    }


    public void UpdateHandler(GridCommandEventArgs args)
    {
        SampleData item = (SampleData)args.Item;

        //update the view-model
        var index = MyData.FindIndex(i => i.ID == item.ID);
        if (index != -1)
        {
            MyData[index] = item;
        }

        //perform actual data source operations here
    }

    //model and dummy data generation
    public class SampleData
    {
        public int ID { get; set; }
        public string Name { get; set; }
        public Role Role { get; set; }
    }

    public enum Role
    {
        [Display(Name = "Manager")]
        ManagerRole,
        [Display(Name = "Employee")]
        EmployeeRole,
        [Display(Name = "Contractor")]
        ContractorRole
    }

    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,
                Role = (Role)(i % 3) // just some sample to populate initial values for the enum
            });
        }
    }
}

Unplanned
Last Updated: 21 Jan 2025 20:23 by Mac
Created by: Humayoon
Comments: 1
Category: UI for Blazor
Type: Feature Request
15

Hi,

I would like to have a Expand/Collapse All Grid Groups button in the Grid Header. I know this is possible to do so programmatically outside of the grid but my users want it inside the Grid. 

Thanks,

Humayoon

Completed
Last Updated: 09 Jul 2025 11:05 by ADMIN
Release 2025 Q2 (May)
Created by: Dialog
Comments: 4
Category: UI for Blazor
Type: Feature Request
15

I'd like to use the adaptive rendering but I also need to keep AllowCustom feature.

===

ADMIN EDIT

===

This request applies to all components that support AllowCustom feature and adaptive rendering: for example, ComboBox, MultiColumnComboBox.

Completed
Last Updated: 19 Oct 2021 12:57 by ADMIN
Release 2.28.0
Created by: Datafyer
Comments: 1
Category: UI for Blazor
Type: Feature Request
14
It would be very nice to be able to have a heatmap style chart where each cell is dependant on the matching x/y values.
In addition each cell is colored or styled based on the x,y combination.
Completed
Last Updated: 15 Sep 2022 17:08 by Doug
Release 2.27.0
Created by: Brian
Comments: 5
Category: UI for Blazor
Type: Feature Request
14
Hi I need to do barcode / QR code (mostly QR code) in Blazor.  It is not on the roadmap, so I don't expect it anytime in the next 6 months.  Great support for QR code in Asp.Net Core UI, but I don't think they mix, and I'm writing in pure Blazor.  Suggestions?
Completed
Last Updated: 12 Oct 2022 12:59 by Javier
Release 3.5.0

If the TextArea component is used within an EditorTemplate of a grid column, edit mode is always closed upon hitting ENTER.  The thing is that I'm using the TextArea to allow the user to input several lines.  Upon Enter the user wants to move to a new line within the TextArea and not to finish the edit mode.

Regards,

René

---

ADMIN EDIT

For the time being I can offer using the popup editing or a custom external edit form (inline or popup).

Another workaround would be to stop the keydown event propagation so the grid/treelist cannot consume it and close the cell:

 

        <TreeListColumn Field="EmailAddress" Width="220px">
            <EditorTemplate>
                @{
                    CurrentlyEditedEmployee = context as Employee;
                    <div @onkeydown:stopPropagation="true">
                        <TelerikTextArea @bind-Value="@CurrentlyEditedEmployee.EmailAddress"></TelerikTextArea>
                    </div>
                }
            </EditorTemplate>
        </TreeListColumn>

 

It is possible that the grid might stop handling Enter when editor templates are present so you can use the events from the custom editor as desired to invoke the save operation. This could happen through the following request: https://feedback.telerik.com/blazor/1493770-ability-to-prevent-multiple-calls-of-async-updatehandler-when-pressing-enter-in-incell-edit-mode. With or without it, it is highly likely that the approach of preventing the event propagation is the correct one because the grid cannot know what the editor template contains and handle events differently based on that.

 

---

Unplanned
Last Updated: 18 Jul 2022 17:23 by Robert C
Created by: Michael
Comments: 5
Category: UI for Blazor
Type: Feature Request
14

Hi

Passwords are not yet supported. There is a DataAnotations Datatype for that. So technically this is possible and should not be a big deal. Almost all apps have a password entry somewhere. 

Example:

    class LoginModel
    {
        [Required]
        [Display(Name = "User Name")]
        public string UserName { get; set; }

        [Required]
        [DataType(DataType.Password)]
        [Display(Name = "Password")]
        public string Password { get; set; }
    }

Annoying because then you have to do the form fields all manually because of the password.

Thanks for considering.

Best regards, Michael

 
Completed
Last Updated: 21 Dec 2023 13:23 by ADMIN
Release 5.1.0 (31 Jan 2024) (R1 2024)
Created by: Fredrik
Comments: 3
Category: UI for Blazor
Type: Feature Request
14

The Theme Builder contains a really nice looking Popover control, and I was a bit disappointed to discover that this doesn't seem to be documented or supported in UI for Blazor.

I realize I can probably use the Tooltip to achieve a similar effect, with two caveats:

  1. Tooltip requires of substantial CSS hacking to appear as the Popover control.
  2. The Popover closes on an explicit event, whereas Tooltip closes when it loses focus.

 

Is there any chance a Popover control is planned for a future release?

 

Completed
Last Updated: 18 Nov 2020 13:37 by ADMIN
Release 2.20.0
Created by: James
Comments: 3
Category: UI for Blazor
Type: Feature Request
13
Please add a toolbar control for Blazor
Completed
Last Updated: 06 Jan 2021 10:00 by ADMIN
Release 2.21.0
Created by: Datafyer
Comments: 0
Category: UI for Blazor
Type: Feature Request
13

In many cases users need to be able to specify a number which is easily visualized using a horizontal slider.
This allows the user to easily move the point to their desired location.

It can be helpful to allow this to also be constrained using a forced range selection.

Completed
Last Updated: 12 May 2021 04:56 by ADMIN
Release 2.24.0
Created by: Ben Hayat
Comments: 2
Category: UI for Blazor
Type: Feature Request
13
Card:
A Card component similar to what can be done with Bootstrap. However a pre made Blazor component that we can quickly give it size parameters, shading and etc. to create a card where we can put content in the card.
Unplanned
Last Updated: 19 Sep 2025 09:46 by Thomas

One really nice feature MudBlazor UI has is the Dialog component. You can pass a component to the Dialog Service and it will display it in a modal dialog.

Existing Example

An example of this would be:

             var orderParams = new DialogParameters();
                orderParams.Add("SelectedOrderHeader", Item);
                orderParams.Add("EditMode", "Add");
                orderParams.Add("SelectedOrderDetail", new OMSOrderDetail());
          
                DialogService.Show<OrdersDetailForm>("Click on orders grid to continue", orderParams);

 

<OrderDetailsForm> is a custom Blazor component.

Does the Telerik Blazor dev team have any plans for implementing something like this?

          
Duplicated
Last Updated: 09 Dec 2024 14:03 by ADMIN

On a grid grouped by a field (using GroupDescriptors) where the amount of records exceed the page limit, therefore generating multiple pages, provide an option to keep the collapsed/expanded states of the groups when navigating through the pages.

In-house we implemented the following approach to mitigate this issue: when calling OnRead event, after processing the data (order, filter, group, etc) we're mapping the groups and subgroups to its corresponding indexes. When page changing, we then store the current state of the groups, alongside its keys (aka  the label of the group). After page changing and mapping the groups and subgroups again, we just match the group names stored in this temporary state with the group names of the new page and restore the state.

For example: start with all groups initially collapsed, page 1 has groupA and groupB and user expanded groupB, changed to page 2, which has the remaining records of groupB and groupC. In this case it will restore groupB as expanded while groupC keeps collapsed.

Example to demonstrate the issue: https://blazorrepl.telerik.com/melmEeFi43owNZBe50

Completed
Last Updated: 19 Sep 2019 06:05 by ADMIN
Created by: Ben Hayat
Comments: 5
Category: UI for Blazor
Type: Feature Request
11
Hello Team;

An important (3 actually) components that we require heavily in our (to make sure we collect data accurately), are a good Date, Time and Date/Time Combo picker.
In any business app, Date/Time can be very crucial piece of data that needs to be collected from user correctly and visually, especially on smaller devices.

Could you please consider these 3 data pickers that can be bound to the model?
Thanks in advance.
..Ben
Duplicated
Last Updated: 07 Jul 2020 16:06 by ADMIN
Created by: Darryl
Comments: 3
Category: UI for Blazor
Type: Feature Request
11
It would be nice to have a toggle switch available in the UI for Blazor components. The component could support true/false and have customized text for each value.
Duplicated
Last Updated: 13 Nov 2020 18:59 by ADMIN
Created by: Anders
Comments: 1
Category: UI for Blazor
Type: Feature Request
11

First of all, The team loves the product, and development is going 10x faster with a UI library with so many features.

 

But we're looking for making diagrams inside our application. Something like https://www.syncfusion.com/blazor-components/blazor-diagram

is it a feature currently in the backlog or is it possible to put it there?

That will make us possible to make a flowchart over what assets are connected to each other in our data center

Unplanned
Last Updated: 04 Jan 2021 08:29 by ADMIN
Created by: Srdjan
Comments: 1
Category: UI for Blazor
Type: Feature Request
11

Greetings!

 

Since the focus events are natively supported by blazor, could they be implemented in the input controls? Workarounds via JS are possible but they create a lot of redundant and cluttered code around the code base. OnChange/ValueChange only fire when the value has changed. Though, we have a lot of scenarios where we need the focus events when a value did not change.

Duplicated
Last Updated: 24 Jul 2023 07:27 by Mark

Unexpected scroll behaviour is seen after selecting an item in a DropDownList/Multiselect with a scroll mode set to virtualise. We are unable to easily scroll upwards using the scroll bar in the control or using a mouse/trackpad. The scroll position immediately snaps back to the selected item. Sometimes we are able 'escape' this by rapidly scrolling but this does not feel like intended behaviour.

Downward scrolling seems okay and using the keyboard arrow keys also seems unaffected. This is reproducible on the demo page: Blazor DropDownList - Virtualization - Telerik UI for Blazor and https://docs.telerik.com/blazor-ui/components/multiselect/virtualization.

Reproduction steps on Chrome:

  1. Navigate to demo page and render local example preview
  2. Select item "Name 27"
  3. try to scroll up with the arrow buttons on the scrollbar or the mouse wheel

Minimal reproducible example: Blazor MultiSelect - Virtualization - Telerik UI for Blazor

 

Unplanned
Last Updated: 15 May 2025 09:16 by ADMIN
Created by: Jesper
Comments: 7
Category: UI for Blazor
Type: Feature Request
11
I am using MS Playwright to create End2End tests. It worked fine when we used MudBlazor, but after we migrated to telerik I have run into a problem with the TelerikDropDownList.

It stops working if you open it too fast. It goes into a state where no matter what you do (Rebind/changing data bound values etc.), it will not open and show items.

It can be reproduced easily by calling .Open() in OnInitializedAsync()

I have reproduced it without MS Playwright in REPL, so you can easily debug it.

https://blazorrepl.telerik.com/QIOUYoPc57iQKy6702

If you uncomment the await Task.Delay(3000); the code will work.

Expected behavior:
It is ok that Open() does nothing while the control is initializing. It is not ok that just because you called Open() once, then you are forever stuck without being able to open it later, no matter how long you wait or what you do with the items.

I do not want to insert random Delays in my code either as I expect the TelerikDropDownList to not malfunction just because I open it too early.

I hope you can prioritize this as right now the DropDownList is not usable for us.