We recently raised a ticket: 1424874.
We would like to request this ability to be added as a feature.
An error is thrown in the browser's console when pasting text + image from Word into the Kendo UI Editor: "Not allowed to load local resource: file:///C:/Users/..."
This is due to the inability of the browser to access the image file, located on the client machine.
The explanation of the above is the following. If you test the following sample (note, that it does not use Kendo) in Chrome, and try to paste text + image in the contenteditable <div>, you will observe the same error. The Editor also renders its content in an editable div element. The browser does not recognize that the user attempts to paste an image. Instead of reading the image data and loading it as a base64 string to the src attribute of the <img> element it generates an <img> tag which points to the clipboard location of the file on the client machine. As the browser is not allowed to access such resource, it trows the error observed and the image is not rendered.
To resolve this issue, when pasting only an image (no text), the Editor has its own internal implementation. Therefore, the user is able to paste images (e.g. clicking on the image in Word->Ctrl +C->then Ctrl + V in the Editor). However, when pasting it together with text, the widget does recognize the text and does not apply the custom processing aimed to convert the image. Therefore the native browser behavior of pasting images is exhibited.
When I tried your framework, I found a lot of positive and useful components, but unfortunately in our conditions I can not fully use the components with virtualization, because they can not work without counting the number of records. I have a lot of data and any scrolling, page selection, components such as combobox, dropdownlist, pager, grid, etc., every time i have to count the total number, and the queries are complex, not just select * from. Performance drops immediately, imagine i'm scrolling through a combobox, where there are 6 million records, where on every page Iihave to do select count(*) from table .. join...join... where .... and add to that another 100 users that all scroll the same combobox, for example. It would be great to be able to simply load data page by page without counting the total, but remove invisible elements from the DOM if the number of pages loaded is greater than a certain number.
Some other commercial frameworks have similar things.
I would not like to look for other alternatives, because you have done a very good and high-quality work. Maybe there are workarounds to this problem?
I'm not just talking about the grid, such controls combobox, dropdown do not have the functionality of endless scrolling. I'd like to see something like
And you can find out when the interface should finish scrolling by an empty response from the server, when there is no more data.
Why not just scroll through the list, adding a portion of data without a total, if the next portion is empty, then finished.
You have even the library train sewn count number when calling ToDataSourceResult on IQueryable
Counting the number of rows on complex queries is a rather expensive operation.
I would very much like to see such functionality on your widgets
PS: I have already talked on this topic with your developers
It would be nice that export-to-excell feature supports the text orientation which is supported by MS Office and Open Office. This feature lets the user to have vertical text in the worksheet.
Often, working with the Kendo events is difficult, because the events lack any kind of context. For example, the Change event should also pass back OldValue and NewValue, in case you need to do any additional comparative work on your own, without having to figure out how to get back to the DataItem and figure it out for yourself. Also, if you are handling a Grid row changed event, or cell changed event, at the very least you should be passing the Uid of the row that changed, so I can get it from the data source.
Almost all formatting tools such as fontName, fontSize, backColor, foreColor, bold, italic, etc. do not change bullets in unnumbered lists and numbers in numbered lists. Please see the sample below:
Does Kendo.Ooxml.Workbook have a setter for which sheet opens after the workbook is saved as an excel, similar to activeSheet in Kendo.spreadsheet?
(Note: using Kendo MVC ver 2017.3.913.545 - it's not on the list below)
Saving large data to xlsx takes longer time to complete.
Evaluate optimizing the value setting and the usage of CellSelection.
FluentValidation is an excellent tool that keep us from using DataAnnotations' Validator's decorators to achieve the entity class keeps as is, a just POCO class. The pros of this lead us to those developers, like me, that focus its backend (entities) development in Database-First processes, to lose decorators applied to the entity or model view class in every change made to the Database rather than the entity class, FluentValidation give us a better control of the validation rules, separates the validation from the entity class or view model class, testing is easier than DataAnnotations and support client-side validations. As far as I know, FluentValidation injects Data Annotation under the covers.
It would be great if you consider to take advantage of the integration with this tool in your route map.
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.
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.
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.
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...