Dojo example: https://dojo.telerik.com/eRazIrIB
The data is requested, but it is not displayed in the Grid.
The data is displayed, regardless of the type of loader used.
I have a grid where the editor button should not be with text so I added a class to the button like this:
@(Html.Kendo().Grid<...>() .Name("...") .Columns(columns => { columns.Command(command => command.Edit() .Text(" ") .HtmlAttributes(new { @class = "grid-button-notext", title = "..." })); }) .Editable(editable => editable.Mode(GridEditMode.PopUp) .TemplateName("...")) )
but the HtmlAttributes are applied also to the two buttons on the popup editor
<div class="k-edit-buttons k-actions-end">
<button type="button" class="k-grid-update grid-button-notext k-button k-button-md k-rounded-md k-button-solid k-button-solid-primary" title="...">
<span class="k-icon k-i-check k-button-icon"></span>
<span class="k-button-text">Save</span>
</button>
<button type="button" class="k-grid-cancel grid-button-notext k-button k-button-md k-rounded-md k-button-solid k-button-solid-base" title="...">
<span class="k-icon k-i-cancel k-button-icon"></span>
<span class="k-button-text">Cancel</span>
</button>
</div>
Expected behaviour:
the HtmlAttributes to be applied only to the grid button. And if needed to provide PopupButtonHtmlAttributes like you have for column: HtmlAttributes, HeaderAttributes, FooterAttributes
Filtering a column bound to a complex object throws a JavaScript error.
This is a regression introduced with v 2023.1.117
Uncaught TypeError: Cannot convert undefined or null to object
at Function.keys (<anonymous>)
at x (kendo.all.js:313050:21)
at init._createForm (kendo.all.js:313050:21)
at init._init (kendo.all.js:313050:21)
at init._click (kendo.all.js:313050:21)
at HTMLAnchorElement.dispatch (jquery.min.js:3:12445)
at r.handle (jquery.min.js:3:9174)
JavaScript error is thrown and the filter menu is not generated.
Filtering should work as expected.
I have a model with configured Display and Required DataAnnotation.
However the TagHelper Grid doesn't serialize them because it is lacking a configuration property to bind to a Model like the HtmlHelper does:
@(Html.Kendo().Grid<Kendo.Mvc.Examples.Models.CustomValidationProductViewModel>()
.Name("grid")
...
)
Can this capability be implemented for the TagHelper as well?
Tooltip produces inconsistent behavior upon hovering when the content is configured through the content client-side configuration.
For every second hover, the Tooltip does not display the element's content.
For every second hover, the Tooltip should display the element's content.
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.
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);
})
)
//...)
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)
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.
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());
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)
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.
Grouping a column with Group Paging and Client Operations enabled results in slow performance in comparison to prior versions.
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.
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.
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?
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
}
The last checkbox selection is not disabled and allows all the columns to be removed if the menu options for the command column are explicitly set to false:
The last checkbox selection should be disabled without allowing all the columns to be removed if the menu options for the command column are explicitly set to false:
The following dojo depicts the aforementioned behavior.
Grid PageSizes TagHelper attribute does not expose an IEnumerable overload
The Grid PageSizes TagHelper attribute exposes only an int[]
overload which prevents adding options such as "All".
In comparison to its HtmlHelper counterpart:
.Pageable(paging => paging.PageSizes(new object [] { 5, 10, 20, "All" }))
It would be a good idea to consider altering the page sizes to accept an IEnumerable overload.
Grid Filterable Button Title Message is not correctly serialized.
Set the Filterable.Messages.ButtonTitle() API Configuration as follows:
@(Html.Kendo().Grid<OrderViewModel>()
.Name("grid")
.Columns(columns =>
{
columns.Bound(p => p.OrderID).Filterable(false);
columns.Bound(p => p.Freight);
})
.Filterable(f => f.Messages(m => m.ButtonTitle("Filter")))
)
Hover the Filter Button Icon and notice that the buttonTitle message is applied instead.
The Filter ButtonTitle message shows its default message.
The Filter ButtonTitle should show the custom-provided message.
Grid throws an error when the Filterable Column Messages TagHelper is set.
<messages />
in a column's <filterable></filterable>
TagHelper.Setting the Messages TagHelper produces the following compilation error:
The tag is not allowed by parent tag helper. Only child tags with name(s) 'cell, operators, datasource' are allowed.
Setting the Messages TagHelper should not produce the following compilation error.
When the GroupPaging configuration is present the exported Grid doesn't have any data.
The exported Excel only contains headers and footers
The whole content of the Grid must be exported.