Completed
Last Updated: 03 Apr 2024 07:45 by ADMIN
Release 2024 Q1
Victor
Created on: 06 Jan 2017 13:25
Category: UI for ASP.NET MVC
Type: Feature Request
25
Add case sensitive filtering for the MVC Grid wrapper
The Grid should allow switching between case sensitive and case insensitive filtering.
21 comments
ADMIN
Eyup
Posted on: 03 Apr 2024 07:45

Hi Holger,

 

You can use this property like this:

            .DataSource(dataSource => dataSource
                .Ajax()
                .PageSize(20)
                .CaseSensitiveFiltering()
                .ServerOperation(true)
Here is the original filtering behavior without this property:


And this is the result with this property enabled:


 

Regards,
Eyup
Progress Telerik

Stay tuned by visiting our public roadmap and feedback portal pages. If you're new to the Telerik family, be sure to check out our getting started resources, as well as the only REPL playground for creating, saving, running, and sharing server-side code.

Holger
Posted on: 27 Mar 2024 15:21

I am unable to find where this property would apply in the helper. 

I would guess, that it will look like this: .CaseSensitiveFilter(true)

I tried various spots and can't find where it would belong - nothing in the documentation as well. 

@(Html.Kendo().Grid<MyViewModel>()
          .Name("grid")
          .Columns(columns =>
          {
              columns.Bound(model => model.id).Title("ID").Width(65).MinScreenWidth(769);
              columns.Bound(model => model.username).Width(125);
          })
          .DataSource(dataSource => dataSource
                .Ajax()
                .Read(read => read.Action("MyController"), "EventLogs"))
            )
            )
    )
ADMIN
Eyup
Posted on: 21 Mar 2024 12:09

Hello Holger,

 

Yes, a new property was introduced in the latest version called CaseSensitiveFilter, which can be set to true or false depending on your own preference.

 

Regards,
Eyup
Progress Telerik

Stay tuned by visiting our public roadmap and feedback portal pages. If you're new to the Telerik family, be sure to check out our getting started resources, as well as the only REPL playground for creating, saving, running, and sharing server-side code.

Holger
Posted on: 14 Mar 2024 23:51
Great news that it made the release - where is the change documented - how do we configure the case-sensitive option?
ADMIN
Eyup
Posted on: 22 Nov 2023 11:55

Hello Holger,

 

Thank you for your feedback collaboration and readiness.

 

Regards,
Eyup
Progress Telerik

Stay tuned by visiting our public roadmap and feedback portal pages. If you're new to the Telerik family, be sure to check out our getting started resources, as well as the only REPL playground for creating, saving, running, and sharing server-side code.

Holger
Posted on: 15 Nov 2023 15:13
This is great news - we have been waiting diligently for this improvement. Please reach out if you need beta testing. 
ADMIN
Eyup
Posted on: 26 Sep 2023 10:41

Hello Thomas,

 

This feature request is very popular and commonly requested by our users, but I am afraid it still has no estimated time frame for implementation in the source code.

 

Regards,
Eyup
Progress Telerik

Stay tuned by visiting our public roadmap and feedback portal pages. If you're new to the Telerik family, be sure to check out our getting started resources, as well as the only REPL playground for creating, saving, running, and sharing server-side code.

Thomas
Posted on: 19 Sep 2023 14:14

Hi, when can we expect a release date for this feature ? 

 

Best Regards

Vladislav
Posted on: 14 Jan 2023 06:54
This one is an issue for 1 of the projects I'm working on too so I hope this functionality is added soon. It would be great if we are able to execute a predicate on the queryable before determining what the behavior for the current filtering should be because we are using 2 DBs and for 1 of them the current behavior is beneficial for us but for the other one it introduces performance issues. A setting like `Func<IQueryableProvider, bool>` when configuring Kendo services in DI container would best match our usages.
Holger
Posted on: 30 Dec 2022 14:02

Hi Eyup,

 

I really appreciate that. A solution for this long-standing issue would significantly improve the performance of our application and would allow us to use Telerik Grids more often.

Thanks!

 

Holger

ADMIN
Eyup
Posted on: 30 Dec 2022 07:37

Hi Jose,

 

This is a valid request and I will forward it to my Managers so it can hopefully get into the upcoming Planning.

Thank you for sharing your feedback and we will act upon it.

 

Regards,
Eyup
Progress Telerik

Love the Telerik and Kendo UI products and believe more people should try them? Invite a fellow developer to become a Progress customer and each of you can get a $50 Amazon gift voucher.

Jose
Posted on: 23 Dec 2022 15:05
Can we have an update on this topic please? It is a huge performance issue and our DBAs want to stop using KendoUI for this problem.
Holger
Posted on: 31 Aug 2021 17:41

I ended up writing custom filters for the DataSourceRequest that apply LINQ where clauses to the IQueryable. These are applied to the IQueryable prior to ToDataSourceResult(). Basically I do all the filtering and leave the pagination to ToDataSourceResult(). 

My filters do not cover all the filter options that DataSourceRequest has available, but as my use case is limited that approach worked for me. 

Since this is still a workaround I would still appreciate this to be patched by Telerik. 

Brad
Posted on: 27 Aug 2021 13:42

@Holger

Were you able to implement a workaround? I looked for an example of the method you referred to, but could not find anything.

I would also appreciate a fix, but I also really need a workaround if it exists.

Holger
Posted on: 01 Aug 2021 12:33

It appears that "IgnoreCase" is only implemented for client-side filtering. Server-side filtering uses ToDataSourceResult() and the case filtering flag is not passed through in DataSourceRequest. As stated in other comments this has a severe impact on query performance as the database will not use indexes if comparisons are wrapped in LOWER() functions in the generated SQL. 

Especially for databases that are case insensitive, this is completely unnecessary. 

A possible approach would be to add a global flag to ToDataSourceResult() to indicate that the database is case insensitive and the TOLOWER() wrapper should not be generated. 

I am aware of the workaround to implement filtering server-side manually, but that takes away from the simplicity a framework should deliver. 

Given that this issue has been out there for years and reported multiple times a fix would be very much appreciated. 

This has been brought up in ticket 1339310 and in feedback request: https://feedback.telerik.com/kendo-jquery-ui/1360465-todatasourceresult-avoid-casting-to-lower-to-enable-index-use-in-database

ADMIN
Maria Ivanova
Posted on: 10 Jun 2021 06:08

Hi everyone,

The case sensitivity can be toggled using IgnoreCase(System.Boolean). Adding also a reference link to the API documentation:  https://docs.telerik.com/aspnet-mvc/api/Kendo.Mvc.UI.Fluent/GridBoundColumnFilterableBuilder#ignorecasesystemboolean 

Kind Regards, Maria Veledinova Progress Telerik

Love the Telerik and Kendo UI products and believe more people should try them? Invite a fellow developer to become a Progress customer and each of you can get a $50 Amazon gift voucher.

Christopher
Posted on: 29 May 2020 21:53
Please reconsider this item - to provide an opt-out for the case-insensitive lower expression so that indexes can be leveraged on SQL string fields.
OLSA Informatica
Posted on: 02 Nov 2019 08:25
I Agree, huge performance decrease on large SQL tables! Please fix asap
Paul
Posted on: 15 Feb 2019 08:52
I am agreeing with the rest of the comments, there is a lack of regard to the optimisation of the query being performed against the database, database developers and API developers go to great lengths to ensure case sensitive on models, databases and columns and then the Kendo library decides to lower everything causing our indexes to be worthless.
Holger
Posted on: 24 Mar 2018 03:00
This has a huge performance impact on large tables as the SQL ToLower prevents the database from using the index. 
Chris
Posted on: 09 Jan 2017 17:04
This really should be implemented. Adding the ToLower() calls to databases that are already case insensitive is a huge performance decrease.