Hi guys,
I found out, that the QueryableExtension always generates a ToLower for strings filtered with the equals operator. The ToLower is applied by the FilterOperatorExtensions in this method:
private static Expression GenerateEqual(
Expression left,
Expression right,
bool liftMemberAccess)
{
if (left.Type == typeof (string))
{
left = FilterOperatorExtensions.GenerateToLowerCall(left, liftMemberAccess);
right = FilterOperatorExtensions.GenerateToLowerCall(right, liftMemberAccess);
}
return (Expression) Expression.Equal(left, right);
}
It would be nice, if the to lower is controllable with a parameter. At the moment it generates a to lower in the sql query, which generates a lot of overhead in some situations with large tables.
At the moment I remove all "equal to" filter and apply it manually to the IQueryable object.
Best regards
Moritz
### Bug report
### Reproduction of the problem
On the mobile version on Android 10, the Grid does not enter incell editing.
Dojo to reproduce: https://dojo.telerik.com/oDUBuKAt
### Environment
* **Kendo UI version:** 2020.1.219
* **Browser:** Android 10 Web Browser
At current when working with the french culture, the year in the date will default be represented with 2Y (dd/MM/yy)
This potentially creates a problem for dates>2030, a date like 01/01/30 would be save as 1930 instead of 2030.
When looking at other culture such nl-BE, en-GB, 4 digits are always used for the year.
I propose to change this also for the french culture so that dd/MM/yyyy would become the standard format.
PS: You can download the culture file and change it, but you'd experience a problem with the popup editor in combination with a display template... in this case the local culture file will be ignored and 2 digits would still be used for the date
With batch editing there are no indicators that the
grid is "dirty" after you hit delete, but before you hit the save
changes button. [Note, when a user edits a cell, the top corner display a
small red flag letting the end user know the cell is dirty and has not
been saved/synced to the database yet.] This should be added to let the user know the delete action has not been performed and is in a "pending" state until the save button is pressed. This would be very helpful for UX purposes.
In the meantime, I just apply my own "dirty" class to the save button so end users know to press it before leaving the page if they would like to keep their changes.
When Batch update mode is set to true, Popup editing mode should write back the data to grid and not call the update actions directly upon confirming the popup editing window.
I have a page containing a grid, in the toolbar there are following buttons:
* Add
* Edit
* Delete
When the user clicks Edit, the selected row is edited using the pop-up window. Alternatively the user can also double click the row to start editing.
On the bottom of the page there is a Save and Cancel Changes button. The save changes must update all applied changes, the cancel button must undo them.
At current when Popup editing is used and the user confirms the popup window, changes are immediately written to the database. This breaks functionality of the Cancel button. Cancel will now only apply to deletes.
I need popup functionality because I have too many columns to use in-cell editing.
Telerik is ignoring the setting batch(true) when doing popup editing, so this could even be considered a bug instead of a feature request!
IgnoreCase property is missing for the filterable options of the column:
https://docs.telerik.com/aspnet-core/api/Kendo.Mvc.UI.Fluent/GridBoundColumnFilterableBuilder
The option is documented in:
https://docs.telerik.com/kendo-ui/api/javascript/ui/grid/configuration/columns.filterable.ignorecase
I was wanting to create a multiselect filter inside the kendo grid that will filter an array column, NOT a simple string column. Just adding the .Filterable(ftb => ftb.Multi(true)) does display a basic 'multiselect' with just checkboxes in it, which is not ideal , but does work. But, when you click filter, the grid becomes empty. I had to use a clienttemplate() function, to return an html object like so:
export function MultiRowTemplate(data) {
if (data == null) {
return "";
}
var row = "";
for (var i = 0, len = data.length; i <
len
; i++) {
row += data[i].Description + "<br/>";
}
return row;
}
My column is:
columns.ForeignKey(a => a.DisplayExp, (System.Collections.IEnumerable)ViewData["Exp"], "Id", "Description").ClientTemplate("#= MultiRowTemplate(data.DisplayExp) #").Filterable(ftb => ftb.Multi(true)).Title("Experience");
the code for the foreign key doesn't make much sense as it's an array column, but that was pointed to by telerik support on other forum posts.
So, there must be a way to hook into that column and run some custom code to return to the grid the filtered values? i've seen examples for jquery, and mvc, but theres nothing for .net core. This should just work out of the box, as I don't think this is an uncommon need. Could you give me an example or point me in the right direction?