Unplanned
Last Updated: 25 Sep 2023 15:22 by erwin

I have noticed that neither the HtmlHelper nor the TagHelper wrappers of the Grid's Pageable.Pagesize configuration support the all option to be configured as a page size.

This is unlike the Kendo UI for jQuery pageSize option which supports it as per the example in the API:

 pageable: {
    pageSizes: [2, 3, 4, "all"],
    numeric: false
  }
Unplanned
Last Updated: 05 Sep 2023 13:47 by Dan

When a Grid that has a DateTime column is exported to Excel that column doesn't get its width automatically like columns bound to other types of data.

An explicit Width needs to be set for the DateTime column as evident in this Telerik REPL.

Could you please fix the columns.autoWidth of the kendo.ooxml.Workbook to work for all types of data?

Completed
Last Updated: 30 Oct 2023 08:57 by ADMIN
Release R1.2024-Increment.1(15.Nov.2023)
Created by: Dan Mortimer
Comments: 0
Category: Grid
Type: Feature Request
1
In Telerik UI for ASP.NET MVC you could put Grid options in the query string of the page with the grid name as a prefix and those would be automatically applied to the correct grid. This is achieved via the PrefixUrlParameters configuration, though it is missing for the ASP.NET Core Grid.
Declined
Last Updated: 01 Sep 2023 13:31 by ADMIN
Created by: Stacy
Comments: 1
Category: Grid
Type: Bug Report
0

 

I am using the Grid with two editor template bound to viewdata to populate the components.

Now this is code that I wrote in 2017 that I recent upgraded to .NET 7 ASP Core and has work all those years with no issue. So I think this may be a regression in the grid code.

I have embedded the relevant code leaving out the grid views custom javascript since it isn't relevant.

The behavior that I am seen is that the the grids model properties that do NOT use a customer editor template are not being bound when the save event fires.

public class AlertRuleGridViewModel
{
    public int Id { get; set; }

    [UIHint("ComponentEditor")]
    public string? Component { get; set; }

    [UIHint("EmailAddress")]
    public string? Email { get; set; }

    [UIHint("TypeEditor")]
    public string? Type { get; set; }

    [UIHint("Boolean")]
    public bool Enabled { get; set; }
}



<div class="container alert-rules-grid">
    @(Html.Kendo().Grid<AlertRuleGridViewModel>()
        .Name("alert-grid")
        .DataSource(dataSource => dataSource
        .Ajax()
        .Model(model =>
        {
            model.Id(l => l.Id);
            model.Field(field => field.Id).Editable(false);
            model.Field(field => field.Type).DefaultValue(ViewData["defaultType"] as String);
        })
        .PageSize(12)
        .Sort(a => a.Add("Id").Descending())
        .Read(read => read.Action("GetRules", "Alerts").Data("additionalData"))
        .Create(update => update.Action("UpdateRule", "Alerts"))
        .Update(update => update.Action("UpdateRule", "Alerts"))
        .Destroy(destroy => destroy.Action("DeleteRule", "Alerts"))
        .Events(e => e.Error("gridErrorHandler"))
        )
        .Columns(columns =>
        {
            columns.Bound(b => b.Id).Title("Id").Visible(true).Width("4%");
            columns.Bound(b => b.Component).Title("Component").EditorTemplateName("ComponentEditor").Visible(true);
            columns.Bound(b => b.Email).Title("Email").Visible(true);
            columns.Bound(b => b.Type).Title("Log Type").EditorTemplateName("TypeEditor").Visible(true);
            columns.Bound(b => b.Enabled).Title("Enabled").ClientTemplate("#=renderStatus(data)#").Visible(true);
            columns.Command(command =>
            {
                command.Edit();
                command.Destroy();
            });
        }
        )
        .ToolBar(toolBar =>
        {
            toolBar.ClientTemplateId("toolBarTemplate");
        })
        .Events(events =>
        {
            events.Cancel("onCancelEdit");
            events.Save("onSave");
        }
        )
        .Editable(editable => editable.Mode(GridEditMode.InLine))
        .Pageable() // Enable paging
        .Sortable() // Enable sorting
        .Scrollable(s => s.Height("auto"))
        .Resizable(resize => resize.Columns(true))
        )
</div>

I suspect the issue is the generated html for the input that used the editor template.

The data-bind attribute is set to "value:Component.Component" which should be "value:Component"
<td class="k-table-td" role="gridcell" data-container-for="Component">
	<span class="k-input k-combobox k-combobox-clearable k-input-solid k-input-md k-rounded-md k-valid" style="">
		<input name="Component.Component_input" class="k-input-inner k-valid" type="text" autocomplete="off" title="" role="combobox" aria-expanded="false" style="" tabindex="0" aria-disabled="false" aria-readonly="false" aria-busy="false" aria-autocomplete="none" aria-controls="Component_Component_listbox" data-bind="value:Component.Component_input">
			<span unselectable="on" class="k-clear-value k-hidden" title="clear" role="button" tabindex="-1">
				<span class="k-svg-icon k-svg-i-x" aria-hidden="true">
					<svg viewBox="0 0 512 512" focusable="false" xmlns="http://www.w3.org/2000/svg">
						<path d="M416 141.3 301.3 256 416 370.7 370.7 416 256 301.3 141.3 416 96 370.7 210.7 256 96 141.3 141.3 96 256 210.7 370.7 96l45.3 45.3z"/>
					</svg>
				</span>
			</span>
			<button type="button" class="k-input-button k-button k-button-md k-button-solid k-button-solid-base k-icon-button" aria-label="expand combobox" role="button" tabindex="-1">
				<span class="k-svg-icon k-svg-i-caret-alt-down k-button-icon" aria-hidden="true">
					<svg viewBox="0 0 512 512" focusable="false" xmlns="http://www.w3.org/2000/svg">
						<path d="M256 352 128 160h256L256 352z"/>
					</svg>
				</span>
			</button>
			<input id="Component_Component" name="Component.Component" type="text" value="" data-role="combobox" aria-disabled="false" aria-readonly="false" style="display: none;" data-bind="value:Component.Component"/>
			<script>kendo.syncReady(function(){jQuery("#Component_Component").kendoComboBox({"dataTextField":"Name","dataValueField":"Value","valuePrimitive":true,"dataSource":[{"Name":"AppLog.Common.Test","Value":"AppLog.Common.Test"},{"Name":"AppLog.WebAPI","Value":"AppLog.WebAPI"},{"Name":"BadgeReader","Value":"BadgeReader"},{"Name":"CCS.WebUI","Value":"CCS.WebUI"},{"Name":"LVCVA.AppLog.Internal.Web","Value":"LVCVA.AppLog.Internal.Web"},{"Name":"LVCVA.AppSecurity.Domain","Value":"LVCVA.AppSecurity.Domain"},{"Name":"Registration.WPF.UI","Value":"Registration.WPF.UI"},{"Name":"spLogApplicationMessage","Value":"spLogApplicationMessage"}]});});</script>
			<span class="field-validation-valid" data-valmsg-for="Component" data-valmsg-replace="true"/>
		</td>
The data-bind attribute is set to "value:Type.Type" which should be "value:Type"
<td class="k-table-td" role="gridcell" data-container-for="Type">
	<span title="" class="k-picker k-dropdownlist k-picker-solid k-picker-md k-rounded-md k-valid" unselectable="on" role="combobox" aria-expanded="false" tabindex="0" aria-controls="Type_Type_listbox" aria-disabled="false" aria-readonly="false" aria-busy="false" aria-describedby="e73b8727-5e28-4d9b-9faa-df8239f54aa5" style="">
		<span id="e73b8727-5e28-4d9b-9faa-df8239f54aa5" unselectable="on" class="k-input-inner">
			<span class="k-input-value-text"/>
		</span>
		<span role="button" class="k-input-button k-button k-button-md k-button-solid k-button-solid-base k-icon-button" aria-label="select" type="button">
			<span class="k-svg-icon k-svg-i-caret-alt-down k-button-icon" aria-hidden="true">
				<svg viewBox="0 0 512 512" focusable="false" xmlns="http://www.w3.org/2000/svg">
					<path d="M256 352 128 160h256L256 352z"/>
				</svg>
			</span>
		</span>
		<input id="Type_Type" name="Type.Type" type="text" value="" data-role="dropdownlist" style="display: none;" data-bind="value:Type.Type"/>
		<script>kendo.syncReady(function(){jQuery("#Type_Type").kendoDropDownList({"dataTextField":"Type","dataValueField":"Value","valuePrimitive":true,"dataSource":[{"Type":"Critical","Value":"Critical"},{"Type":"Error","Value":"Error"},{"Type":"Warning","Value":"Warning"},{"Type":"Information","Value":"Information"},{"Type":"Verbose","Value":"Verbose"},{"Type":"Start","Value":"Start"},{"Type":"Stop","Value":"Stop"},{"Type":"Suspend","Value":"Suspend"},{"Type":"Resume","Value":"Resume"}]});});</script>
		<span class="field-validation-valid" data-valmsg-for="Type" data-valmsg-replace="true"/>
	</td>
Also the Save event for the grid is not populating the e.values object per the telerik documentation.

Completed
Last Updated: 12 Sep 2023 06:05 by ADMIN
Release R3.2023-Increment.3(11.Oct.2023)

Bug report

Grouping a column with Group Paging and Client Operations enabled results in slow performance in comparison to prior versions.

Reproduction of the problem

  1. Open the following dojo.
  2. Group the Company Name column.
  3. Notice that the grouping is considerably slower.
  4. Once grouped, open the browser console to observe the elapsed time.

Current behavior

The grouping functionality for the Grid with client operations and group paging would produce approximately 10 times slower results in terms of execution. In comparison to previous versions.

2023.2.718
Save1

Expected/desired behavior

The grouping functionality for the Grid with client operations and group paging should produce identical time execution to prior versions, as illustrated in the following dojo.

2022.2.510
MicrosoftTeams-image (3)

Environment

  • Kendo UI version: 2023.2.718
  • Browser: [all]
Completed
Last Updated: 05 Oct 2023 08:43 by ADMIN
Release R3.2023-Increment.3(11.Oct.2023)

Overview

Currently, the ASP.NET Core Grid Columns's Template() method does not expose the ability to provide a delegate. In comparison to the ASP.NET MVC Grid Column's Template() method:

It would be useful to add this option to the ASP.NET Core Grid, as it will allow the configuration for multiline templates. For example:

.Columns(columns =>
{
    columns.Template(@<text>
        <div>#= OrderID # </div>
         <div>#= Discontinued # </div>
    </text>);
})

Current behavior

The Columns.Template() method of the Grid does expose a delegate overload.

Expected/desired behavior

The Columns.Template() method of the Grid should expose a delegate overload.

Environment

  • Kendo UI version: 2023.2.718
  • Browser: [all]
In Development
Last Updated: 13 Nov 2024 13:25 by ADMIN
Scheduled for 2025 Q1 (Feb)
Created by: n/a
Comments: 0
Category: Grid
Type: Bug Report
1

Bug report

When a Grid's row is reordered and then the changes are saved - a Destroy request is sent to the server for the dataItem of the reordered row. This happens even though no changes are applied to dataItem of the reordered row.

Reproduction of the problem

  1. Run this Telerik REPL or this Dojo
  2. Reorder a row
  3. Open the browser's Network Tab
  4. Click the Save Changes button

Expected/desired behavior

The Grid should request the reordered item to be perished from the backend.

Environment

  • Kendo UI version: 2023.2.718
Unplanned
Last Updated: 11 Aug 2023 19:48 by Brent

Is it possible to add an option to enable/disable the valuePrimitive of the DropDownList editor of a Foreign Key column in the Grid? This way, the ForeignKey column can be configured to allow null values.

 

Unplanned
Last Updated: 08 Aug 2023 12:55 by ADMIN
Scheduled for Sprint7.R3.2017

Currently, calling the ClientTemplate method of the Grid's ToolBar overrides any previously defined commands. 

It would be really useful to expose an option to use the Template component to define a custom command for the Grid's ToolBar, instead of having to rewrite the entire TollBar in the ClientTemplate configuration.

Unplanned
Last Updated: 24 Jul 2023 05:25 by Ryan
Expose the ability to add an inline template via a delegate overload through the ToolBar.ClientTemplate() API configuration.
Unplanned
Last Updated: 27 Jul 2023 11:26 by Marcos

In the latest version (2023.2.718), the Column Menu in the Grid faild to open if you set the Groupable option to false.

To reproduce the issue simply change the line below in the Grid Overview Demo

.Groupable(g=>g.ShowFooter(false))

to the following:

.Groupable(false)

https://netcorerepl.telerik.com/cxkhGOvU52pBO4NK33

The error you get when clicking on the Column Menu is:

Uncaught TypeError: Cannot read properties of undefined (reading '_canDrag')
    at init._updateGroupColumns (kendo.all.js:321370:19)
    at init._open (kendo.all.js:321370:19)
    at init.trigger (kendo.all.js:321370:19)
    at init._trigger (kendo.all.js:321370:19)
    at init.open (kendo.all.js:321370:19)
    at init.toggle (kendo.all.js:321370:19)
    at init._click (kendo.all.js:321370:19)
    at HTMLAnchorElement.dispatch (jquery.min.js:3:12445)
    at r.handle (jquery.min.js:3:9174)

Completed
Last Updated: 19 Oct 2023 13:20 by ADMIN
Release R1.2024-Increment.1(15.Nov.2023)
Created by: SturmA
Comments: 0
Category: Grid
Type: Bug Report
0

### Bug report

When dragging and dropping a row within the Grid, the DOM element of the drag handle receives duplicated classes and styles.

### Reproduction of the problem

1) Enable the Drag & Drop functionality of the Grid.

2) Drag and drop a row within the Grid.

3) Inspect the DOM element of the drag handle - it has multiple duplicated classes and styles:

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


### Environment

* **Kendo UI version: 2023.2.606
* **jQuery version: 1.12.4
* **Browser: [all]

Completed
Last Updated: 04 Jun 2024 06:14 by ADMIN
Release 2024 Q1

Bug report

When tabbing in a batch editable Grid cells do not enter edit mode.
This is a regression introduced with v 2023.2.606.

Reproduction of the problem

  1. Run this dojo
  2. Click on a cell in Product Name column - an editor is generated
  3. Press the Tab key

Current behavior

The corresponding Unit Price is focused, but an editor is not generated

Expected/desired behavior

The cell should enter edit mode, as with v2023.1.425 - dojo

Environment

  • Kendo UI version: 2023.2.606
  • Browser: [all]
Completed
Last Updated: 18 Jan 2024 07:56 by ADMIN
Release 2024 Q1

Bug report

Group Paging is not working as expected when the Kendo UI Grid is populated from data deserialized from a file and multiple groups are defined.

Reproduction of the problem

Using the UI for ASP.NET Core Grid, populate it with a file, set GroupPaging to true, add more than one group, and set the default serialization:

 

builder.Services.AddControllersWithViews()
            .AddJsonOptions(options =>
                options.JsonSerializerOptions.PropertyNamingPolicy = null);
@(Html.Kendo().Grid<MyViewModel>()
        .Name("grid")
        .Groupable()
        .Scrollable(s=>s.Virtual(true))
        .DataSource(dataSource=>dataSource
            .Ajax() 
            .GroupPaging(true)
            .PageSize(50)
            .Read("ReadFromFile", "HomeController")
            .Group(x=>
            {
               x.Add(y=>y.Group1);
               x.Add(y=>y.Group2);
            })      
        )
        //...)

Current behavior

With multiple groups, the follow error message will appear:

System.ArgumentNullException: Value cannot be null. (Parameter 'source')
   at System.Linq.ThrowHelper.ThrowArgumentNullException(ExceptionArgument argument)
   at Kendo.Mvc.Infrastructure.Group.InitializeSubgroups()
   at SubgroupsGetter(Object )
   at System.Text.Json.Serialization.Metadata.JsonPropertyInfo`1.GetMemberAndWriteJson(Object obj, WriteStack& state, Utf8JsonWriter writer)
   at System.Text.Json.Serialization.Converters.ObjectDefaultConverter`1.OnTryWrite(Utf8JsonWriter writer, T value, JsonSerializerOptions options, WriteStack& state)
   at System.Text.Json.Serialization.JsonConverter`1.TryWrite(Utf8JsonWriter writer, T& value, JsonSerializerOptions options, WriteStack& state)
   at System.Text.Json.Serialization.JsonConverter`1.TryWriteAsObject(Utf8JsonWriter writer, Object value, JsonSerializerOptions options, WriteStack& state)
   at System.Text.Json.Serialization.JsonConverter`1.TryWrite(Utf8JsonWriter writer, T& value, JsonSerializerOptions options, WriteStack& state)
   at System.Text.Json.Serialization.Converters.IEnumerableConverter`1.OnWriteResume(Utf8JsonWriter writer, TCollection value, JsonSerializerOptions options, WriteStack& state)
   at System.Text.Json.Serialization.JsonCollectionConverter`2.OnTryWrite(Utf8JsonWriter writer, TCollection value, JsonSerializerOptions options, WriteStack& state)
   at System.Text.Json.Serialization.JsonConverter`1.TryWrite(Utf8JsonWriter writer, T& value, JsonSerializerOptions options, WriteStack& state)
   at System.Text.Json.Serialization.Metadata.JsonPropertyInfo`1.GetMemberAndWriteJson(Object obj, WriteStack& state, Utf8JsonWriter writer)
   at System.Text.Json.Serialization.Converters.ObjectDefaultConverter`1.OnTryWrite(Utf8JsonWriter writer, T value, JsonSerializerOptions options, WriteStack& state)
   at System.Text.Json.Serialization.JsonConverter`1.TryWrite(Utf8JsonWriter writer, T& value, JsonSerializerOptions options, WriteStack& state)
   at System.Text.Json.Serialization.JsonConverter`1.WriteCore(Utf8JsonWriter writer, T& value, JsonSerializerOptions options, WriteStack& state)
   at System.Text.Json.Serialization.JsonConverter`1.WriteCoreAsObject(Utf8JsonWriter writer, Object value, JsonSerializerOptions options, WriteStack& state)
   at System.Text.Json.JsonSerializer.WriteCore[TValue](JsonConverter jsonConverter, Utf8JsonWriter writer, TValue& value, JsonSerializerOptions options, WriteStack& state)
   at System.Text.Json.JsonSerializer.WriteStreamAsync[TValue](Stream utf8Json, TValue value, JsonTypeInfo jsonTypeInfo, CancellationToken cancellationToken)
   at System.Text.Json.JsonSerializer.WriteStreamAsync[TValue](Stream utf8Json, TValue value, JsonTypeInfo jsonTypeInfo, CancellationToken cancellationToken)
   at System.Text.Json.JsonSerializer.WriteStreamAsync[TValue](Stream utf8Json, TValue value, JsonTypeInfo jsonTypeInfo, CancellationToken cancellationToken)
   at Microsoft.AspNetCore.Mvc.Infrastructure.SystemTextJsonResultExecutor.ExecuteAsync(ActionContext context, JsonResult result)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeNextResultFilterAsync>g__Awaited|30_0[TFilter,TFilterAsync](ResourceInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.Rethrow(ResultExecutedContextSealed context)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.ResultNext[TFilter,TFilterAsync](State& next, Scope& scope, Object& state, Boolean& isCompleted)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.InvokeResultFilters()
--- End of stack trace from previous location ---
   at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeNextResourceFilter>g__Awaited|25_0(ResourceInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.Rethrow(ResourceExecutedContextSealed context)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.Next(State& next, Scope& scope, Object& state, Boolean& isCompleted)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.InvokeFilterPipelineAsync()
--- End of stack trace from previous location ---
   at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeAsync>g__Logged|17_1(ResourceInvoker invoker)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeAsync>g__Logged|17_1(ResourceInvoker invoker)
   at Microsoft.AspNetCore.Routing.EndpointMiddleware.<Invoke>g__AwaitRequestTask|6_0(Endpoint endpoint, Task requestTask, ILogger logger)
   at Microsoft.AspNetCore.Authorization.AuthorizationMiddleware.Invoke(HttpContext context)
   at Microsoft.AspNetCore.Diagnostics.DeveloperExceptionPageMiddleware.Invoke(HttpContext context)

Expected/desired behavior

Server GroupPaging should work as expected with multiple groups and the default serialization that is delivered with ASP.NET Core. An example would be this live demo.

Workaround

Use the Newtonsoft library to set the serialization options for the application:

builder.Services.AddControllersWithViews()
  .AddNewtonsoftJson(options => options.SerializerSettings.ContractResolver = new Newtonsoft.Json.Serialization.DefaultContractResolver());

 

Environment

  • Kendo UI version: 2023.2.606
  • jQuery version: All Supported Versions
  • Browser: all
Completed
Last Updated: 26 Jul 2023 10:55 by ADMIN
Release R3.2023-Increment.2(30.Aug.2023)

Bug report

Reproduction of the problem

  1. Open the following dojo.
  2. Open the filter menu for the "category" field.
  3. Interact with the second DropDownList with the "-Select Value-" option label.

Current behavior

The second criterion DropDownList in the Filter Menu does not show records upon interaction:
image

Expected/desired behavior

The second criterion DropDownList in the Filter Menu should show records upon interaction:
image

Environment

  • Kendo UI version: 2023.2.606
  • Browser: [all]
Unplanned
Last Updated: 31 May 2023 15:27 by serge
Created by: serge
Comments: 0
Category: Grid
Type: Feature Request
2
Since you only distribute your Demos in a project with an MVC architecture it would be nice if the Scaffolders you provide were available for Razor Pages to decrease the learning curve of the product.
Declined
Last Updated: 04 May 2023 13:30 by ADMIN
Created by: Michael
Comments: 1
Category: Grid
Type: Bug Report
0

If I put the Grid into a kendo-template for the TileLayout control, the ClientTemplate does not work properly. It only gets called once regardless of the number of items in the grid and the data is not being passed in. 

This is my column definition:

columns.Bound(c => c.DocumentKey).Title(" ").ClientTemplate("#=CommandTemplate(data)#").Width(70);

And I am calling the .ToClientTemplate() on the Grid. Everything else work great except for this one issue.

I have not been able to find any other info, so what am I missing?

Unplanned
Last Updated: 07 Apr 2023 07:26 by Pribadi
Created by: Pribadi
Comments: 0
Category: Grid
Type: Feature Request
1
Expose the ability to expand and collapse the Grid's Toolbar through a built-in API configuration.
Completed
Last Updated: 29 May 2023 16:57 by ADMIN

Bug report

Tooltip produces inconsistent behavior upon hovering when the content is configured through the content client-side configuration.

Reproduction of the problem

  1. Navigate to the Loading Content with AJAX or the Content Template demos.
  2. Hover over the first element.
  3. Hover over the second element and notice that the content is not shown.

Current behavior

For every second hover, the Tooltip does not display the element's content.

Expected/desired behavior

For every second hover, the Tooltip should display the element's content.

Environment

  • Kendo UI version: 2023.1.314
  • Browser: [all]
Unplanned
Last Updated: 21 Mar 2023 16:27 by Travis
Created by: Travis
Comments: 0
Category: Grid
Type: Feature Request
5
Expose the ability to explicitly define arbitrary HTML attributes for the Toolbar's buttons similar to the HtmlHelper incarnation of the Grid.