Completed
Last Updated: 24 Mar 2023 11:17 by ADMIN
Release 4.2.0 (26/04/2023)
Created by: René
Comments: 14
Category: Grid
Type: Feature Request
19

With a pageable grid after scrolling down the first page and then paging, the next page should be scrolled to the top - but it is not.

Is there a way to scroll up by code until this is fixed ???

----

ADMIN EDIT

A sample solution is attached to the end of this post that shows how you can achieve this.

----

Completed
Last Updated: 21 Mar 2023 14:26 by ADMIN
Release 4.2.0 (26/04/2023)

Keyboard support is only working properly when the ChipList is bound to a List<ChipModel>.  If you try one of your other demos of the chiplist the following will occur:

  • Right Arrow will navigate to the next chip in the list
  • Left Arrow will navigate to the first chip in the list

I would expect that the Left Arrow will navigate to the previous chip in the list.  (As a side note, I would recommend having the the Down Arrow and Up Arrow mimic Right and Left since a screen reader user won't necessarily know that the chiplist is horizontal.)

An example of the problem can be found in this demo:

https://blazorrepl.telerik.com/wdEQFzbC495I2bCP51

Here is a sample where I converted the returned list to List<ChipModel> and bound to that:

https://blazorrepl.telerik.com/cRYwFJvM52yemqN404

In that example, the Left Arrow functions normally.

Completed
Last Updated: 21 Mar 2023 14:21 by ADMIN
Release 4.2.0 (26/04/2023)

Here is a REPL test page. If the user navigates forwards and backwards via the Wizard buttons, the TreeView checkboxes persist their state. If the user navigates via the Stepper, the checkbox state is not retained.

The issue is triggered by the TabStrip.

A possible workaround is to prevent Stepper clicks with CSS:

.k-tabstrip .k-wizard .k-stepper .k-step {
  pointer-events: none;
}

Completed
Last Updated: 21 Mar 2023 14:05 by ADMIN
Release 4.2.0 (26/04/2023)
If I have a ToolBarItem set to Overflow.Auto and vertically shrink the screen the item is duplicated both in the Overflow popup and in the visible portion of the toolbar. 
Completed
Last Updated: 21 Mar 2023 13:58 by ADMIN
Release 4.2.0 (26/04/2023)

Hello,

If I disable a Menu item at runtime, it prohibits access to child items via the mouse, but still opens the child group of items if I use the keyboard navigation.

Here is a test page with a workaround included (which is to recreate the Menu).

<TelerikButton OnClick="@DisableItem">Disable Services item</TelerikButton>
<TelerikButton OnClick="@EnableItem">Enable Services item</TelerikButton>

@if (ShowMenu)
{
    <TelerikMenu Data="@MenuItems" />
}

@code {
    List<MenuItem> MenuItems { get; set; }

    bool ShowMenu { get; set; } = true;

    async Task DisableItem()
    {
        MenuItems.Find(x => x.Text == "Services").Disabled = true;

        MenuItems = new List<MenuItem>(MenuItems);

        // workaround start
        ShowMenu = false;
        await Task.Delay(1);
        ShowMenu = true;
        // workaround end
    }

    async Task EnableItem()
    {
        MenuItems.Find(x => x.Text == "Services").Disabled = false;

        MenuItems = new List<MenuItem>(MenuItems);
    }

    protected override void OnInitialized()
    {
        MenuItems = new List<MenuItem>()
    {
            new MenuItem()
            {
                Text = "Company",
                Items = new List<MenuItem>()
                {
                    new MenuItem()
                    {
                        Text = "Overview"
                    },
                    new MenuItem()
                    {
                        Text = "Events"
                    }
                }
            },
            new MenuItem()
            {
                Text = "Services",
                Items = new List<MenuItem>()
                {
                    new MenuItem()
                    {
                        Text = "Consulting"
                    },
                    new MenuItem()
                    {
                        Text = "Education"
                    }
                }
            }
        };

        base.OnInitialized();
    }

    public class MenuItem
    {
        public string Text { get; set; }
        public bool Disabled { get; set; }
        public List<MenuItem> Items { get; set; }
    }
}

Completed
Last Updated: 21 Mar 2023 13:38 by ADMIN
Release 4.2.0 (26/04/2023)

Pressing Espace in a focused SearchBox throws an "Error: System.ObjectDisposedException: The CancellationTokenSource has been disposed." exception.

<AdminEdit>

A workaround that will solve the issue until the fix is released.

<TelerikDialog @bind-Visible="@Visible"
               Title="@Title">
    <DialogContent>
        <TelerikGrid Data=@GridData Pageable="true" Height="400px" Width="700px">
            <GridToolBar>
                <span class="k-toolbar-spacer"></span> @* add this spacer to keep the searchbox on the right *@
                <div onkeydown="event.stopPropagation()">
                    <GridSearchBox />
                </div>
            </GridToolBar>
            <GridColumns>
                <GridColumn Field="@(nameof(Employee.EmployeeId))" />
                <GridColumn Field=@nameof(Employee.Name) />
                <GridColumn Field=@nameof(Employee.Team) Title="Team" />
                <GridColumn Field=@nameof(Employee.IsOnLeave) Title="On Vacation" />
            </GridColumns>
        </TelerikGrid>
    </DialogContent>
</TelerikDialog>

@code {
    private bool Visible { get; set; } = true;
    private string Title { get; set; } = "Software Update";

    public List<Employee> GridData { get; set; }

    protected override void OnInitialized()
    {
        GridData = new List<Employee>();
        var rand = new Random();
        for (int i = 0; i < 15; i++)
        {
            GridData.Add(new Employee()
                {
                    EmployeeId = i,
                    Name = "Employee " + i.ToString(),
                    Team = "Team " + i % 3,
                    IsOnLeave = i % 2 == 0
                });
        }
    }

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

 

</AdminEdit>

Completed
Last Updated: 21 Mar 2023 13:29 by ADMIN
Release 4.2.0 (26/04/2023)

The TreeView has CheckBoxMode="@TreeViewCheckBoxMode.Multiple" and CheckParents="true". Only some checkboxes are checked and there are parent checkboxes in indeterminate state.

When I try to clear all checked checkboxes, the indeterminate checkboxes are not cleared and maintain their state.

ADMIT EDIT:

Initially, this bug report was about unchecking all child items. However, it appears that the opposite behavior exists too - if all children are checked programmatically, the parent checkbox will show as indeterminate. In this case, check the parent explicitly as well.

Completed
Last Updated: 21 Mar 2023 13:17 by ADMIN
Release 4.2.0 (26/04/2023)

Checking a checkbox of a on demand-loaded child then collapsing and reopening its parent makes the checkbox disappear.  However, it is still checked in the CheckedItems collection, but just not in the UI.  See this REPL example.  Steps...

1. Expand a top level item

2. Check its child checkbox

3. Collapse the top level item

4. Expand it again

Result: checkbox gone (in the UI)

 

 

 


Completed
Last Updated: 21 Mar 2023 13:06 by ADMIN
Release 4.2.0 (26/04/2023)

If the application expands TreeView items programmatically, and then the user tries to select multiple items, an exception will occur.

The issue is a regression that occurred in version 3.0.0. A possible workaround is to Rebind() the TreeView with a small delay after programmatic item expansion.

<TelerikTreeView @ref="@TreeViewRef"
                 Data="@FlatData"
                 @bind-ExpandedItems="@ExpandedItems"
                 SelectionMode="@TreeViewSelectionMode.Multiple"
                 SelectedItems="@SelectedItems"
                 SelectedItemsChanged="@((IEnumerable<object> items) => SelectedItemsHandler(items))" />

<TelerikButton OnClick="@ExpandAll">Expand All</TelerikButton>
<TelerikButton OnClick="@CollapseAll">Collapse All</TelerikButton>

@code {
    public TelerikTreeView TreeViewRef { get; set; }
    public IEnumerable<TreeItem> FlatData { get; set; }
    public IEnumerable<object> SelectedItems { get; set; } = new List<object>();
    public IEnumerable<object> ExpandedItems { get; set; } = new List<object>();

    async Task ExpandAll()
    {
        ExpandedItems = FlatData.Where(x => x.HasChildren == true);

        await Task.Delay(1);
        TreeViewRef.Rebind();
    }

    void CollapseAll()
    {
        ExpandedItems = new List<object>();
        SelectedItems = new List<object>();
    }

    void SelectedItemsHandler(IEnumerable<object> items)
    {
        SelectedItems = items;
    }
    protected override async void OnInitialized()
    {
        FlatData = LoadFlat();
    }

    int TreeLevels { get; set; } = 3;
    int ItemsPerLevel { get; set; } = 3;
    int IdCounter { get; set; } = 1;
    List<TreeItem> LoadFlat()
    {
        List<TreeItem> items = new List<TreeItem>();
        PopulateTreeItems(items, null, 1);
        return items;
    }
    void PopulateTreeItems(List<TreeItem> items, int? parentId, int level)
    {
        for (int i = 1; i <= ItemsPerLevel; i++)
        {
            var itemId = IdCounter++;
            items.Add(new TreeItem()
            {
                Id = itemId,
                Text = $"Level {level} Item {i} Id {itemId}",
                ParentId = parentId,
                HasChildren = level < TreeLevels
            });
            if (level < TreeLevels)
            {
                PopulateTreeItems(items, itemId, level + 1);
            }
        }
    }

    public class TreeItem
    {
        public int Id { get; set; }
        public string Text { get; set; }
        public int? ParentId { get; set; }
        public bool HasChildren { get; set; }
    }
}


Completed
Last Updated: 21 Mar 2023 12:59 by ADMIN
Release 4.2.0 (26/04/2023)
If the treeview is in a component within the `@Body` and so gets disposed on navigation, there are errors in a WebAssembly app.
Completed
Last Updated: 21 Mar 2023 12:50 by ADMIN
Release 4.2.0 (26/04/2023)
Create a page that hosts a TreeView with checkbox selection inside a TelerikWindow. Provide an initially checked item and navigate to this page. When it renders the checkbox is not in a checked state. 
Completed
Last Updated: 20 Mar 2023 15:26 by ADMIN
Release 4.2.0 (26/04/2023)
Created by: n/a
Comments: 0
Category: Scheduler
Type: Bug Report
2
By design, the appointments should be resized and repositioned upon browser resize. As of UI for Blazor 3.7., the appointments are not properly scaled upon browser resize.
Completed
Last Updated: 20 Mar 2023 10:17 by ADMIN
Created by: Roman
Comments: 2
Category: UI for Blazor
Type: Bug Report
0

OnRowRender in version 4 style is applied through one line.

 

@* Conditional styling/formatting for rows (including locked/frozen columns). *@

<style>
    /*the following selectors target the locked/frozen columns*/
    /*===*/
    .k-grid .k-master-row.myCustomRowFormatting .k-grid-content-sticky,
    .k-grid .k-master-row.myCustomRowFormatting.k-alt .k-grid-content-sticky
    /*===*/
    {
        background-color: inherit;
    }

    .k-grid tr.myCustomRowFormatting:hover {
        background-color: red !important;
    }

    .k-grid tr.myCustomRowFormatting {
        background-color: #90EE90;
    }
</style>

<TelerikGrid Data="@MyData"
             Height="446px"
             Pageable="true"
             Width="450px"
             OnRowRender="@OnRowRenderHandler">
    <GridColumns>
        <GridColumn Field="@(nameof(SampleData.Id))" Width="120px" Locked="true" />
        <GridColumn Field="@(nameof(SampleData.Name))" Width="200px" Title="Employee Name" />
        <GridColumn Field="@(nameof(SampleData.Team))" Width="200px" Title="Team" />
    </GridColumns>
</TelerikGrid>

@code {
    void OnRowRenderHandler(GridRowRenderEventArgs args)
    {
        var item = args.Item as SampleData;

        //conditional applying Class
        if (true)
        {
            args.Class = "myCustomRowFormatting";
        }
    }

    public IEnumerable<SampleData> MyData = Enumerable.Range(1, 30).Select(x => new SampleData
    {
        Id = x,
        Name = "name " + x,
        Team = "team " + x % 5
    });

    public class SampleData
    {
        public int Id { get; set; }
        public string Name { get; set; }
        public string Team { get; set; }
    }
}
Completed
Last Updated: 16 Mar 2023 14:50 by ADMIN

Hi

Trying to update to the latest version but in output in GitHub Actions it shows:

The type 'DataSourceRequest' is defined in an assembly that is not referenced. You must add a reference to assembly 'Telerik.DataSource, Version=2.1.3.0

However in my csproj I am referencing <PackageReference Include="Telerik.DataSource" Version="2.1.3" />

Any ideas?

Completed
Last Updated: 15 Mar 2023 08:31 by ADMIN
Release 4.1.0 (15/03/2023)

Here is a TelerikForm with a FormItem (1) for a boolean field. Another FormItem (2) should render, depending on the boolean field (1). This does not work with a TelerikForm, but works with a standard EditForm.

The workaround for a TelerikForm is to use a FormItem Template with a TelerikCheckBox. This is demonstrated below as well.

<EditForm Model="@_data">
    <label>Condition 1 (InputCheckbox):</label>
    <InputCheckbox @bind-Value="@_data.Value1" />
    <br />
    @if (_data.Value1)
    {
        <label>Result 2</label>
        <InputCheckbox DisplayName="Result 2:" @bind-Value="@_data.Value2"></InputCheckbox>
    }
</EditForm>

<h1>TelerikForm</h1>

<TelerikForm Model="@_data">
    <FormItems>
        <FormItem LabelText="Condition 1 (FormItem):" Field="@nameof(_data.Value1)"></FormItem>
        <FormItem>
            <Template>
                <label for="x">Condition 1 (TelerikCheckBox):</label>
                <br />
                <TelerikCheckBox Id="x" @bind-Value="_data.Value1" />
            </Template>
        </FormItem>
        @if (_data.Value1)
        {
            <FormItem LabelText="Result 2:" Field="@nameof(_data.Value2)"></FormItem>
        }
    </FormItems>
</TelerikForm>

@code {
    private ExampleDto _data { get; set; } = new ExampleDto();

    public class ExampleDto
    {
        public string TextValue { get; set; }
        public bool Value1 { get; set; }
        public bool Value2 { get; set; }
    }
}

Completed
Last Updated: 14 Mar 2023 13:08 by ADMIN
Release 4.1.0 (15/03/2023)
Created by: Minto
Comments: 6
Category: DateInput
Type: Feature Request
10
Pressing 0 in the date input deletes the date and shows the format 
Completed
Last Updated: 14 Mar 2023 12:09 by ADMIN

Hello,

I seem to have stubled upon a strange bug in TelerikGrid. We have wrapped a TelerikGrid and the Columns are also wrapped to allow special actions.
The bug is present in "raw-telerik-code" as well.

We have an edge case where we have a TelerikGrid and some of its columns should be Locked (Stickied/Frozen) as a default behaviour.
But depending on user interaction we want to change the state. We cannot use a property for each column that we want to be Locked/Unlocked as it should be handled by the GridState.

When the Column is using default behaviour (not Templated), it works as intended. But as soon as you use a <Template> for the Column, the Locked state cannot be changed from the default/supplied value.

TLDR: Programmatically changing the Locked state of a column where the cell is templated will not change the locked state.

I have prepared two REPL examples. One for 3.7.0 as it is what we currently are using, and one for 4.0.1 as to prove that it still exists in the current itteration.

3.7.0
https://blazorrepl.telerik.com/cHEHurlI06olUsJ410


4.0.1
https://blazorrepl.telerik.com/cdYRuBvo07aB6BGY39

 

With best regards

Completed
Last Updated: 14 Mar 2023 10:34 by ADMIN
Release 4.1.0 (15/03/2023)

The Visible parameter removes the underlying render fragment when set to false.

Please expose APIs (maybe Show/Hide methods) to keep the DOM in tree but only modify visibility / display CSS attributes to hide/show the telerik window element. This would allow developer to retain content / state of the window which may need to be displayed very frequently.

Completed
Last Updated: 14 Mar 2023 07:23 by ADMIN
Created by: Pratik
Comments: 1
Category: UI for Blazor
Type: Feature Request
0

For Example, I have DTO like below, how on Form I will Display Lable for FormItem from value get from Display Name

    public class DepartmentRequestDTO
    {
        [Display(Name = "Department Id")]
        [Required(ErrorMessage = "Department Id" + ErrorConstant.RequiredMsg)]
        public int DepartmentId { get; set; }

        [Display(Name = "Department Name")]
        //[Required(ErrorMessage = "Department Name" + ErrorConstant.RequiredMsg)]
        [Required]
        [StringLength(50, MinimumLength = 3)]
        public string Name { get; set; }

        [Display( Name = "Remarks")]
        //[Required(ErrorMessage = "Remarks" + ErrorConstant.RequiredMsg)]
        [StringLength(250, MinimumLength = 3)]
        public string Remarks { get; set; }
    }
Completed
Last Updated: 13 Mar 2023 13:53 by ADMIN
Release 4.1.0 (15/03/2023)
Created by: Kevin
Comments: 0
Category: MultiSelect
Type: Feature Request
26

I would like to have the ability to refresh the Multiselect Popup.

Currently, if the AutoClose="false" feature is applied and the items are programmatically selected, you cannot display them as selected while the Popup is opened. You need to close it first to accordingly update the selected items collection in it.

1 2 3 4 5 6