Would like to suggest 2 features for the spreadsheet which will be very useful
1) Ability to delete specific cell (not just the content, but the cell itself). Currently there is way to delete row or columns, but no cell deletion. When cell is deleted, user should be prompted whether to allow all cells below the deleted cell to shift up, or all cells on the right of it to shift left. Akin to excel
2) Format painter. The ability to "paint" the styles (such as font size, boldness) from existing text to another existing text. Akin to excel.
In a grid with virtualization, when just normally scrolling down requests for the exact same data are often sent multiple times after each other. The reason for this is probably that the grid sends an asynchronous request for example Top 100, Skip 200 and then does not keep track of that it is still waiting for a reply for this request, before asking for the same data a short period later.
Commonly requests for the same data is made 2 or 3 or more times after each other, causing performance problem at the server side and in many cases unnecessary calls to the database. Fixing this should lower the number of requests for data to the server considerably, maybe with a factor two or more with just normal grid operation when the user is just scrolling down to view more data in the grid.
To demonstrate the problem, open a copy of the virtualization grid demo, for example here:
Open the Developer Tools and just observe which network requests are sent to the server. Just scroll down in any way and observe that very often the exact same request is made. A request for the same data has the same Top and Skip values in the parameters sent the server. You can see the servers reply is exactly the same JSON data multiple times after each other.
Solving this performance problem almost completely would seemingly be to in a variable just keep track of the "Latest request" sent, since the problem happens mostly just with normal scrolling in one direction with request sent after each other. So one would need to keep track of that a call for Top 100, Skip 200 has been made, and if the program wants to request the exact same data again, just wait for a reply for the first request, instead of sending a new one. (If needed, send a new request only after a specific timeout for a reply for the first one).
A more thorough solution would be to have a data structure to keep track of the Top and Skip tuples for all the calls to the server that has not yet have had a reply from the server, and not repeat those exact same calls again if still waiting for a reply for the first request.
Every time the user scrolls in a grid with virtual scrolling, the grid asks for the total number of rows satisfying the filtering conditions. This causes the same exact query to be sent to the database multiple times. Instead cache this value and only ask for it if the filters change.
So with normal scrolling down the grid this will generate the following traffic to SQL:
Select Top 100, Skip 0 from Table where...
Select Count(*) from Table where (returns X number of rows)
Select Top 100, Skip 100 from Table where...
Select Count(*) from Table where (returns same X, exact same query)
Select Top 100, Skip 200 from Table where...
Select Count(*) from Table where (returns same X)
and so on
To see this open a copy of the grid with virtual scrolling:
Scroll the grid down:
In Developer Tools observer the result that is sent back to server includes the same:
every time. In terms this will often generate a Select Count(*) being sent to the server in order to supply the answer for the current filters of the grid. An example when a Select count(*) is generated can be seen in your MVC wrappers, for example, where the toDataSourceResult() will cause this same query to repeatedly be sent to the database with every request for new data (use SQL Server Profiler or similiar to see the unnecessary queries). This is also true for your demo implemenations of the server code when used with Kendo UI.
For grids with large data sets, as is often used with virtual scrolling, this can be a slow query.
Instead of asking for the number of rows every time the grid is scrolled, only do so at inatialization and when the filtering conditions are changed (for example use a variable or an event to keep track of the dataSources filters changing).
If the program cannot assume that the same number of rows will be returned, then please implement a setting for developers that we can use to say that the data is not changing.
We look at historical data that are constant and with more than 100k rows, the Select count(*) puts an annecessary strain on the servers.
We could implement caching for this value, but instead the grid should not repetedly ask for the same value multiple times, instead of only when the filters change.
The bug I was talking was when setting tagMode of kendoMultiSelect to single, clicking the clear button (x at right of textbox) doesn’t trigger “deselect” event. Not sure if it’s by design. They fixed a similar bug regarding “change” event - https://github.com/telerik/kendo-ui-core/issues/4649.
Repro snippet could be found at
I am stuck with this problem for some time now. Everything works well with mouse, I can drag and drop column into grouping header normally. But on touchscreens I can't drag it. I am interested if anyone has had this issue?
Export to PDF shows the header commands like "Export to PDF", etc. These should be configurable to not be displayed.
Similarly, using a .PdfExport event to hide and show the command columns is functional but should be included as a property to avoid the flashing that the hide/show does to a large element.
Result: The items that were selected, then un-selected still show as selected in the list
This can be reproduced on the latest demo page. https://demos.telerik.com/kendo-ui/multiselect/index
Hi Telerik team.
There is a plan or intention to isolate the Template engine indo a separated file or something?
It would be very useful to have a disabelDates() method because the suggestion right now is to destroy the calendar and create it again which works but this approach is not acceptable. We need to set different dates based on the current month in the calendar view:
Currently the shared tooltip's position gets in the way of actually seeing the current category's series, as well as hindering any attempts to click on any series behind the tooltip.
Ideally, the tooltip should form off to the side of the current category's visible/clickable elements, either dynamically based on room available, or statically based on configuration (top, bottom, left, right).
In case you need to get the current page now, here are the suggestions made by Progress Technical Support Engineers:
When the DateInput uses a day-first format, e.g. dd/MM/yyyy, if you try to type in 29/02 the DateInput auto-corrects it to 01/02, which is not intuitive to the user and requires them to go back and fix the date again after typing in a leap year.
The DateInput should allow the user to type in 29/02 until the year portion is not provided.
When showOn assumes its default value(to work with hold event on touch devices), the ContextMenu cannot be displayed by tapping and holding over the target elements.
The iсsue can be reproduced with the ContextMenu Demo.
When a text with background color set is made bold and copy/pasted, the background color is not being preserved.
The issue can be reproduced on the following Dojo example.
Steps to reproduce:
We are using the progress functionality across the applications, also its inbuilt in Grids/Tree View or most of the Kendo controls when data is loading. Now we are hit with an Accessibility issue as stated below in JAWS 2019.
"Issue: There is a loading screen that appears throughout the application. Sighted users are able to see the loading indicator, however, screen reader users should also be aware of the loading screen."
this is what we use explicitly in some places other than the inbuilt loading indicator.
// show loading indicator kendo.ui.progress($("#divCriteria"), true);
So is there any settings available that we can make this screen readable when the progress bar appears? meaning if we setup globally once place it takes care across everywhere? Including Grids / Treeview etc.
I read setting this role=” aria-busy=” will do the job, but this functionality already have the kendo scripts?
<div role="alert" aria-busy="alert"> Data is loading... </div>
Appreciate a quick response or solution for this...
When the dateInput property is set to true, the readonly method does not make the widget completely non-editable. It restricts user input, however, the date can be modified using the arrow keys.
Reproduction of the issue in a Dojo sample:
1. Initialize DatePicker
2. Set the dateInput property to true
3. Call the readonly() method
Value can be changed with the arrow keys
The value should not be editable