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:
https://dojo.telerik.com/iXijoyaY
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:
https://dojo.telerik.com/eDImUhOV
Scroll the grid down:
In Developer Tools observer the result that is sent back to server includes the same:
__count: "830"
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.
He have created this dojo to illustrate our point.
https://dojo.telerik.com/@navdeep316/iKAmeDAv
We would like to be able to be able to clone options from the top options and subsequently to be able to edit any cloned (child) option.
We are unable to figure out a way so that the child/cloned dropdowns can change state.
Is it a bug or a feature? How can we achieve our aim?
Thank you so much,
Dimitris
Bug report
When the filtering mode of the grid is set to "row" and the filter is programmatically cleared, the "Clear filter" button does not hide.
Reproduction of the problem
Set filterable: {mode: "row"}.
Filter for instance "Is null" or "Is not null".
Clear the filter - $("#grid").getKendoGrid().dataSource.filter({});
The "Clear filter" button is not hidden
sample Dojo:
https://dojo.telerik.com/AVOqifeK
If there is text in the filter's input, the button is hidden.
Expected/desired behavior
Hide the "Clear filter" button, irrespectively whether the filter has been cleared programmatically or via the UI.
Environment
Kendo UI version: 2019.1.220
jQuery version: 1.12.4
Browser: [all]
Video: https://www.youtube.com/watch?v=8pnFjgzdaJ8&feature=youtu.be
1. Navigate to: https://dojo.telerik.com/@milena/uZaGuZol (open the dojo sample in edit mode, but not in FullScreen)
2. Scroll Grid to the last item.
3. Open for editing ProductName cell.
4. Open for editing Discontinued cell.
Result: 'Discontinued' cell of the second item will be opened for editing.
Expected: 'Discontinued' cell of the last item should be opened for editing.
In the Wizard to create or update an MVC project, and possibly other wizards, please add support for choosing which cultures that you want to include.
This could be done by adding checkboxes in a tree where you could at first level choose language and then expand and choose country/region, since the files follow the format:
<language code>-<country/region code>.
Most people probably only use English and/or their native language, so please make this a choice in the wizard.
As an example. In one of the latest versions of the framework, the folders for cultures and messages contain 1786 files in total. Out of those we only need 2, the ones for our native language.
Slowly installing and then manually deleting 1784 files in Visual Studio for every time you run the MVC wizards, is a complete waste of time for such a common scenario where you know whihc languages that the app should support.
https://dojo.telerik.com/aPAcUDuc/2
open new window using the button, and close all window one by one, then see that k-overlay is still stay in page
https://demos.telerik.com/aspnet-mvc/spreadsheet/server-side-import-export
Saving large data to xlsx takes longer time to complete.
Evaluate optimizing the value setting and the usage of CellSelection.
If the delete rows button is used on a table that is followed by another table, and all the rows from the first one are deleted, the next table receives focus. Upon clicking the delete row button again, an error is being thrown "Cannot read property 'rows' of undefined".
The issue can be reproduced with the Basic Usage Demo::
Kendo UI mobile widgets are really falling behind and now need an urgent refresh. Most mobile widgets have not been updated in 3 to 4 years (https://github.com/telerik/kendo-ui-core/tree/master/src).
The most urgent is for styles to be updated to match LESS and SASS styles. Currently, styles are a mess and making a mobile app including the grid and other recent responsive widgets with consistent styles takes a lot more time than it should:
- NOVA has many specificities not available in other themes
- OS skins have no match to style the grid and other web responsive widgets
- Material UI is not consistent and up-to-date
Reproduction steps:
1. Open column menu
2. Using arrow keys, go to Filter menu item.
3. Hit right arrow to open Filter submenu
4. Tab through filter submenu
5. Hit escape.
Expected behaviour: Filter submenu closes and focus returns to the parent column menu
Actual behaviour: Both filter and column menu are closed.
Snippet: http://dojo.telerik.com/@gearoidj/iqiwUCEp
This is an issue for accessibility users - there doesn't seem to be a way to return to the parent filter menu using the keyboard without closing all menus and reopening them.
There is one way for it to occur, and that is to use the mouse to place the focus on the Filter menu background - in this case hitting escape will close the Filter menu and focus will be returned to the parent column menu. However this is impractical for an accessibility user who is relying solely on keyboard navigation.
An example of where this (mostly) works is on the Columns submenu - the user can use the left arrow key or Escape to close the child menu or alternatively keep tabbing and they will eventually return to the parent menu (though if they do tab within the child menu, hitting Escape will close both the child and parent menus).
As a suggestion from the response that I've got from Ivan Danchev, I'm raising a new feature to enable/disable columns auto-resize in the the treelist of the gantt chart. Currently the columns width is "static" when it is defined in the column configuration. It'll be great if the columns are resized automatically depending on the length of content in the columns.
Thank!!!
Please provide keyboard shortcut & navigation to open a cell lookup list (menu) & for traversing menu items as shown below;
In Excel Alt+up or Alt+down arrow keys work for the same but in Kendo UI Jquery - spreadsheet , these keys are not working.
If you open the popup of the above components and resize the browser window with the popup still opened, the component is being resized according to the window size but the popup keeps its initial width.
The above scenario can be observed on this link: https://dojo.telerik.com/ovOTUDeV
Dear Team,
Is there any plan or road map for the word cloud widget?
https://wordcloud2-js.timdream.org/#love
Regards,
Velusamy
The workbook exporting to Excel generates a corrupted file when the name of some of its sheets contains a "cell-related" value - for example, "A1", "G5", "F45", etc.
When the saved file is opened in Excel, a "corrupted file" warning appears on the screen.
There shouldn't be any warnings when opening a saved workbook
Changing order of columns by dragging by column header is cool (and should stay), but this scenario is inefficient for large number of columns (more than 10-20).
I suggest to add drag&drop feature to Grid/TreeList column menu (where i can show and hide columns already) to change order of columns.