### 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]
The Pickers are not bound to model value when a nullable DateTime is set.
public class MyModel
{
public DateTime? Birthday { get; set; }
}
@(Html.Kendo().TimePickerFor(m => m.Birthday))
The Pickers are not bound to model value when nullable.
The Pickers are not bound to model value when a nullable DateTime is set.
Kendo UI version: 2024.4.1112
jQuery version: x.y
Browser: [all]
### Bug report
When the project is configured for runtime compilation, and the TagHelper DropDownList has custom classes or attributes, NullReferenceException is thrown.
### Reproduction of the problem
1. Create a .NET 8 project and install the Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation NuGet package.
2. Define a TagHelper DropDownList and add a custom class:
//Program.cs
builder.Services.AddControllersWithViews().AddRazorRuntimeCompilation();
builder.Services.AddMvc().AddJsonOptions(options => options.JsonSerializerOptions.PropertyNamingPolicy = null);
builder.Services.AddKendo();
//View
<kendo-dropdownlist for="Id" datatextfield="Text" datavaluefield="Value" auto-width="true" class="form-control w-75">
<datasource type="Kendo.Mvc.UI.DataSourceTagHelperType.Ajax">
<transport>
<read url="@Url.Action("GetData", "Home")"/>
</transport>
</datasource>
</kendo-dropdownlist>
3. Run the application and observe the exception: "NullReferenceException: Object reference not set to an instance of an object."
4. When using the HtmlHelper version of the DropDownList or removing the custom class from the TagHelper declaration, the error does not occur.
### Expected/desired behavior
The TagHelper DropDownList must exhibit the same behavior as the HtmlHelper DropDownList.
### Workaround
Add the custom class with jQuery:
<kendo-dropdownlist for="Id" datatextfield="Name" datavaluefield="Id" auto-width="true">
...
</kendo-dropdownlist>
<script>
$(document).ready(function(){
$("#Id").addClass("form-control w-75"); // add the class to the hidden input element
$("#Id").attr("required", "required");
$("#Id").closest("span.k-dropdownlist").addClass("form-control w-75"); // add the class to the wrapper element
});
</script>
Alternatively, switch to the HtmlHelper version of the DropDownList.
### Environment
* **Telerik UI for ASP.NET Core version: 2024.4.1112
* **Browser: [all]
The Start Event of a Sortable component is mapping to the "handler" configuration instead of the proper "start" event
REPL: https://netcorerepl.telerik.com/wIYLYnld333JlP3t08
The Start Event is mapped to the "handler" configuration
The Start Event to be mapped to the proper "start" event
TicketID: 1673355
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)")?
The custom ordering of the filter values in the Telerik UI ASP.NET Core Grid does not function correctly when using TagHelpers.
A REPL sample for reproduction: https://netcorerepl.telerik.com/wIYNvEvn00CAqNGL14
The filter values should be presented in the same order as specified in the Filterable configuration.
### Bug Report
Picker TagHelpers do not set the "value" attribute in conjunction with the "for" attribute.
### Reproduction of the problem
1. Create a model with a nullable DateTime property:
public class MyModel
{
public DateTime? Birthday { get; set; }
}
2. Declare either a DatePickerFor, DateInputFor, or TimePickerFor TagHelpers and set an initial value:
@model OrderViewModel
<kendo-dateinput for="OrderDate" value="DateTime.Now">
...
</kendo-dateinput>
3. Notice, that the value has not been assigned accordingly.
This behavior is not consistent with the HTMLHelper, as the Value() attribute is taken more predominantly when the PickerFor HtmlHelper is utilized:
@(Html.Kendo().DatePickerFor(m => m.ShippedDate) .Value(DateTime.Today) )
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"))
}
);
})
Expose additional API configurations for the Grid's ToolBar
As of recent releases, the Kendo UI Grid Toolbar has been substituted with the Kendo UI Toolbar. This change allows users to add the majority ToolBar.items API options apart from the built-in tools.
As noted within the Kendo UI for jQuery API documentation for the Grid's Toolbar:
"Apart from the built-in tools, the Grid fully exposes the ToolBar.items API. This way you can specify any custom tools in the widget using the components available in the ToolBar itself."
The inherited ToolBar.items API options are not available for the server-side Telerik UI Grid for ASP.NET Core and MVC wrappers as well.
It would be beneficial to the customers if the inherited ToolBar.items API options are available for the server-side Telerik UI Grid for ASP.NET Core and MVC wrappers as well.
### 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]
The "Switch" component does not expose "Label" configuration.
For example:
@(Html.Kendo().Switch()
.Name("switch")
.Label(f => f
.Content("Theme")
)
)
In a .NET 7 project when TagHelper Grid is configured and RuntimeCompilation is employed, starting from version 2023.2.606 an unhandled exception is thrown.
When run a runtime error occurs
TagHelper Grid should exhibit the same behavior as HtmlHelper ones.
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
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>",
}
}]
}],
...
});
### Bug report
When building the scripts through the 'npx gulp scripts' command, there is an error "Error: Cannot find module './build/gulp/kendo-version'".
### Reproduction of the problem
Download any of the source bundles (Core, MVC, jQuery) and try to build the scripts.
### Environment
* **Kendo UI version: 2024.4.1112
### Bug report
When you click on the splitbar of a horizontal Splitter, the page scrolls down.
### Reproduction of the problem
1. Create a horizontal Splitter with 2 panes;
2. Set a height of the Splitter;
3. When the page is loaded, focus on the splitbar (click on it or resize the panes). As a result, the page scrolls down.
A Dojo sample for reproduction: https://dojo.telerik.com/uSanOtaW/2
### Expected/desired behavior
The page should not be scrolled vertically.
### Environment
* **Kendo UI version: 2021.3.1207
* **jQuery version: 1.12.4
* **Browser: [all]
### Bug report
When the Virtualization of the MultiColumnComboBox is enabled, the table headers and rows are not aligned correctly.
### Reproduction of the problem
A Dojo sample for reproduction: https://dojo.telerik.com/ORalaWoq
The tables and rows are aligned as expected when using version 2021 R3 SP2 (2021.3.1207).
A temporary workaround:
<style>
.k-table-list .k-table-group-row, .k-table-list .k-table-row {
display: inline-flex;
}
</style>
### Expected/desired behavior
The headers and rows should be aligned correctly when the Virtualization is enabled.
### Environment
* **Kendo UI version: 2022.1.412
* **jQuery version: 1.12.4
* **Browser: [all]
Consider the use of TextWriter async methods for the HTML Helpers, for example the WriteInitializationScript methods. In certain scenarios the use of the synchronous methods causes an exception: System.InvalidOperationException: Synchronous operations are disallowed. Call WriteAsync or set AllowSynchronousIO to true instead.
This can be resolved by explicitly enabling synchronous operations
services.Configure<IISServerOptions>(options =>
{
options.AllowSynchronousIO = true;
});
though synchronous operations have been disabled by default at framework level as of .NET 3.0.