Unplanned
Last Updated: 07 Feb 2025 14:20 by ADMIN
Scheduled for 2025 Q2 (May)
Created by: Alistair
Comments: 0
Category: Wizard
Type: Feature Request
3

Currently, the Content function for Steps in a Wizard only accepts a string value (see API here). 
This means that in order to add a partial view (bound to the current model and its properties), the most straightforward way I could find was to put the partial view (and any wrappers) in its own file and add an extension method "ToHtmlString()". For example:

@model MyModel

@(Html.Kendo().Wizard().Steps(step => {

step.Add().Content(Html.Partial("~/Path/To/View/Wrapper.cshtml", Model).ToHtmlString());

})

using Microsoft.AspNetCore.Html;
using System.IO;

public static class HtmlContentExtensions
{
    public static string ToHtmlString(this IHtmlContent htmlContent)
    {
        if (htmlContent is HtmlString htmlString)
        {
            return htmlString.Value;
        }

        using StringWriter writer = new();
        htmlContent.WriteTo(writer, System.Text.Encodings.Web.HtmlEncoder.Default);
        return writer.ToString();
    }
}
This is not ideal, as it requires the usage of Html.Partial (which displays a warning in the latest versions of .NET 8). It is also awkward as it sometimes means that new view files need to be created for the explicit purpose of being a "wrapper" even though they do not contain much content. And lastly, it also requires an extension method, so it's not immediately easy for other Telerik users to use.

In the Telerik TabStrip, a better approach is possible, as the Content for Items can take in a function which accepts Razor syntax (see API here). For instance:

@model MyModel @(Html.Kendo().TabStrip().Items(tabstrip => { tabstrip.Add()

.Content(@<div id="@Model.TabContainer" class="myTabWrapperClass">

@await Html.PartialAsync("~/Path/To/View.cshtml", Model)

</div>); })

In this case, we can use Html.PartialAsync (avoiding .NET 8 warnings), we don't need an extension method, and it is easy to add any required "wrapping" such as a div with an ID, without needing a whole separate view.

If we had the option to use the same approach with Wizard Steps, that would be ideal!

Unplanned
Last Updated: 07 Feb 2025 10:37 by Korstiaan

Serializing DataSourceResult when it contains several groups is significantly slower compared to serializing the object when no grouping is used. Consider ways to improve the performance. For more context and an example, see Ticket ID: 1677867.

Unplanned
Last Updated: 06 Feb 2025 07:11 by Manu
After closing the popup window by clicking the Update or Cancel button, the grid should automatically select the previously viewed row and adjust the vertical scroll position to keep it within the visible area.
Unplanned
Last Updated: 28 Jan 2025 08:24 by ADMIN

Current configuration: server-side filtering

Desired behavior:

  1. Grid searches are "anded" to any existing filters
  2.  When the search box is cleared the pre-existing filters are retained
Unplanned
Last Updated: 24 Jan 2025 15:13 by E

Bug report

When ParseFormats is set in the DatePicker editor used in the Grid popup, the picker does not show the field value to which it is bound.

Reproduction of the problem

  1. Add a DateOnly? field to the model:

public DateOnly? OrderDate { get; set; }

  1. Bind a Grid column to the field.
  2. Set the default value in the DataSource:
.Model(model =>
{
    model.Id(p => p.OrderID);
    model.Field(p => p.OrderDate).DefaultValue(new DateOnly());
})
  1. Configure Popup editing in the Grid.
  2. Add a DateOnly.cshtml editor in EditorTemplates:
@model DateOnly?

@(Html.Kendo().DatePickerFor(m => m).ParseFormats(new string[] { "MM/dd/yyyy" }).HtmlAttributes(new { title = Html.ViewContext.ViewData.TemplateInfo.GetFullHtmlFieldName("") }))

Current behavior

When editing a record. The value of the OrderDate field is not displayed in the DatePicker.
If you remove the ParseFormats option from the DatePicker, it shows the value as expected.

Expected/desired behavior

The field value should be displayed in the picker, even when ParseFormats is set.

Environment

  • Kendo UI version: 2024.4.1112
  • Browser: All
Unplanned
Last Updated: 24 Jan 2025 07:10 by Dave
The Save button should be disabled after the first click when creating a new item.

This should be applied when using a Telerik UI for ASP.NET Core Grid with PopUp Edit Mode.
Unplanned
Last Updated: 20 Jan 2025 15:20 by Marv

### Bug report

When deferring the component scripts to a file and a specified item of a Form HtmlHelper has a defined editor through the Editor() configuration, a client-side error is thrown:

"Uncaught Error: Syntax error, unrecognized expression: #"

### Reproduction of the problem

1) Enable the global deferred initialization.

2) Define a Form HtmlHelper with a ComboBox editor for one of its items:

@model FormViewModel

@(Html.Kendo().Form<FormViewModel>()
    .Name("form")
    .HtmlAttributes(new { action = @Url.Action("SubmitData", "Home"), method = "POST" })
    .FormData(Model)
    .Items(items =>
    {
        items.Add()
            .Field(f => f.Username)
            .Label(l => l.Text("Username:"));

        items.Add()
        .Field(f => f.City)
        .Label(l => l.Text("City"))
        .Editor(editor => editor
          .ComboBox()
          .DataTextField("Text")
          .DataValueField("Value")
          .BindTo(new List<SelectListItem>()
          {
            new SelectListItem() { Text = "City A", Value = "1" },
            new SelectListItem() { Text = "City B", Value = "2" },
            new SelectListItem() { Text = "City C", Value = "3" }
          })
        );
    })
)
@(Html.Kendo().DeferredScriptFile())

3) When the page with the Form is loaded, open the browser console and examine the error.  Review the content of the loaded kendo-deferred-scripts-xxxxx.js file - the ComboBox initialization script is included after the Form initialization script. Attached you can find screenshots.

When using the TagHelper version of the Form, the ComboBox initialization script is included in the kendo-deferred-scripts-xxxxx.js file before the initialization script of the Form with a unique generated "id" for example "3451ce77-2736-437f-9584-f5a5255902c2". In this case, no client-side errors occur.

### Expected/desired behavior

When deferring the component scripts to a file, the Form with specified editors must be initialized as expected without client-side errors.

### Workaround

Use the TagHelper version of the Form or define the editor by using the EditorTemplateView() option:

        items.Add()
        .Field(f => f.City)
        .Label(l => l.Text("City"))
        .EditorTemplateView(Html.Partial("ComboEditor"));

// ~/Views/Shared/ComboEditor.cshtml

@model FormViewModel

@(Html.Kendo().ComboBoxFor(m => m.City)
.DataTextField("Text")
.DataValueField("Value")
.BindTo(new List<SelectListItem>() {
	new SelectListItem() { Text = "City A", Value = "1" },
	new SelectListItem() { Text = "City B", Value = "2" },
	new SelectListItem() { Text = "City C", Value = "3" }
})
)

### Environment

* **Telerik UI for ASP.NET Core version: 2024.4.1112
* **Browser: [ all ]

Unplanned
Last Updated: 14 Jan 2025 09:54 by ADMIN
Created by: Federico
Comments: 5
Category: UI for ASP.NET Core
Type: Feature Request
0

It would be nice to extend dialog like office 365 right dialog ( docked to the right).

It would be nice to have a dropdown button with a container

Unplanned
Last Updated: 10 Jan 2025 12:57 by Peter

### Bug report

When the Grid is initialized in a hidden container (for example, in a non-selected tab of a TabStrip) and its initial data binding is disabled (autoBind: false), the pager information is not visible when the data is loaded afterward.

### Reproduction of the problem

1. Initialize a Grid into a non-selected tab of a TabStrip and set its autoBind option to "false".

2. Select the tab and check how the empty Grid is rendered.

3. Call the read() method of the Grid's DataSource in the browser console to request the data.

4. The data is loaded, but the pager information remains hidden.

A Dojo sample for reproduction: https://dojo.telerik.com/njVgBvza

### Expected/desired behavior

The pager information must be available when the data is loaded into the Grid.

### Environment

* **Kendo UI version: 2024.4.1112
* **jQuery version: 3.7.1
* **Browser: [all]

Unplanned
Last Updated: 09 Jan 2025 14:32 by Dale
Created by: Dale
Comments: 0
Category: ListView
Type: Feature Request
1

Hi Team,

I would like to request that, when using endless scrolling for the ListView, to include a page indicator to let the user know what page their on when scrolling.  

Thank you!

Unplanned
Last Updated: 03 Jan 2025 13:24 by ADMIN
Created by: Sreeju
Comments: 1
Category: FileManager
Type: Feature Request
1

Currently file manager supports multiple selection by using ctrl and shift keys. However it will be a nice feature if the selection of multiple files available through checkboxs, for e.g. when hovering the item, a checkbox appears in top left corner, and user can select it or unselect it.

 

Unplanned
Last Updated: 03 Jan 2025 08:31 by ADMIN
Created by: ERCANPOLAT
Comments: 0
Category: UI for ASP.NET Core
Type: Feature Request
2

In the example below products is actually DbSet<Product>

public async Task<ActionResult> Products_Read([DataSourceRequest]DataSourceRequest request)
{
    using (var northwind = new SampleEntities())
    {
        IQueryable<Product> products = northwind.Products;
        DataSourceResult result = await products.ToDataSourceResultAsync(request);
        return Json(result);
    }
}

Under the hood the ToDataSourceResultAsync call is executed inside Task.Run

And that Task.Run is calling sync methods of IQueryable which means EntityframeworkCore queries are not taking place with async I/O

Unplanned
Last Updated: 23 Dec 2024 14:09 by Garrett

### Bug report

When the Grid is set up for OData-v4 binding, the columns that bind to DateOnly fields fail to filter. The date value in the filter expression contains the time portion and the following error is thrown:

"The binary operator GreaterThan is not defined for the types 'System.Nullable`1[System.DateOnly]' and 'System.Nullable`1[System.DateTimeOffset]'."

### Reproduction of the problem

1) Create a Grid that uses OData-v4 binding.

2) Bind a specified column to a DateOnly field.

3) Filter the column through the default column filter menu and open the browser DevTools to review the response of the request.

//Model
public DateOnly LastProdUpdate { get; set; }

//View
@(Html.Kendo().Grid<ProductViewModel>()
    .Name("grid")
     .Columns(columns =>
        {
            columns.Bound(p => p.LastProdUpdate).Format("{0:dd/MM/yyyy}");
        })
        ...
        .Filterable()
        .DataSource(dataSource => dataSource
        .Custom()
        .Type("odata-v4")
        .Transport(t =>
        {
            t.Read(read => read.Url("/odata/Products").Data("function() {return {'$expand': 'Employee'} }"));
        })
        .PageSize(10)
        .ServerPaging(true)
        .ServerFiltering(true)
        .ServerSorting(true)
     )
)

### Expected/desired behavior

The DateOnly fields must be filtered successfully as the DateTime fields.

### Environment

* **Kendo UI version: 2024.4.1112
* **Browser: [all]

Unplanned
Last Updated: 10 Dec 2024 09:32 by ADMIN
Created by: David
Comments: 2
Category: Grid
Type: Feature Request
1

By default, when the "paste" command is added, the default option is "insert" mode ("Paste (Insert)"). Is it possible to add an option that allows setting the default paste mode to "replace" ("Paste (Replace)")?

Unplanned
Last Updated: 05 Dec 2024 14:44 by ADMIN
Created by: Steve
Comments: 0
Category: Form
Type: Feature Request
0

The FormItemBuilder exposes an EditorTemplateView method which allows a view to represent the item and provides the entire modal to the view.

As the elements available to forms are limited to those hard coded by Telerik and whilst extension methods can be employed to expand this limitation slightly, the ability to create a context specific view would be ideal

The current implementation looks like this

Html.Kendo().Form<Model>()
    .Items(items =>
    {
        items.AddGroup("Test", 1, 10)
            .Items(i =>
                {
                    i.Add().Field(x => x.Username)
                    i.Add().Field(x => x.Password).EditorTemplateView(Html.Partial("MyView"))
                }
            );
    })

In this example, the entire model is provided into MyView. 

I suggest adding an EditorTemplateFor that uses the lamda expression provided in the Field() method such as

Html.Kendo().Form<Model>()
    .Items(items =>
    {
        items.AddGroup("Test", 1, 10)
            .Items(i =>
                {
                    i.Add().Field(x => x.Username)
                    i.Add().Field(x => x.Password).EditorTemplateViewFor(Html.Partial("MyView"))
                }
            );
    })
Using the convention I would expect MyView to be provided the Password field only
Unplanned
Last Updated: 03 Dec 2024 12:05 by Chris

### Bug report

When loading an editor through a partial View using EditorTemplateView(await Html.PartialAsync("PartialViewName")), the following error occurs:

The 'await' operator can only be used within an async lambda expression. Consider marking this lambda expression with the 'async' modifier.

### Reproduction of the problem

@(Html.Kendo().Form<UserViewModel>()
     .Name("myForm")
     .Items(items =>
     {
         items.Add().Field(f => f.Username).EditorTemplateView(await Html.PartialAsync("PartialViewName"));
      })
)

### Expected/desired behavior

The EditorTemplateView() must accept Html.PartialAsync("PartialViewName").

### Environment

* **Telerik UI for ASP.NET Core version: 2024.4.1112
* **Browser: [all]

Unplanned
Last Updated: 29 Nov 2024 09:51 by Steve
Created by: Steve
Comments: 0
Category: Switch
Type: Feature Request
2

The "Switch" component does not expose "Label" configuration.

For example:

@(Html.Kendo().Switch()
    .Name("switch")
    .Label(f => f
        .Content("Theme")
    )
)

 

Unplanned
Last Updated: 28 Nov 2024 13:35 by ADMIN
Created by: Steve
Comments: 1
Category: UI for ASP.NET Core
Type: Feature Request
1

Whilst I'm aware that I can create a HTML label and add the k-label class. I feel that a Label and a LabelFor are essential parts of the toolkit to prevent brittle code getting created when/if the labels that are created within the toolkit have other requirements

I have created my own implementation for now but I think this should be added to your roadmap, especially as it's such a simple thing to do

Unplanned
Last Updated: 27 Nov 2024 13:15 by Josh

Is it possible to implement template options for the "update" and "cancel" column commands of the Grid?

For example:

$("#grid").kendoGrid({
  columns: [{ 
    command: [{
        name: "edit",
        template: {
            update: "<button class='customUpdate'>Save</button>",
            cancel: "<button class='customCancel'>Cancel</button>",
          }
      }]
   }],
  ...
});

Unplanned
Last Updated: 26 Nov 2024 07:30 by ADMIN
Created by: Khaled Salman
Comments: 3
Category: UI for ASP.NET Core
Type: Feature Request
1
*** Support ticket created by Telerik by Progress staff ***
*** Please follow-up with additional details, if necessary. Thank you. ***

There is currently no built-in feature to dynamically disable pagination when the number of grid rows is fewer than the defined page size. I need a way to automatically disable pagination when the number of records is less than or equal to the page size for a smoother user experience. Fig: 1(a)



In the above image, After filtering the data, despite current records are less than the page size but pagination is still appearing.
1 2 3 4 5 6