jQuery UI Widgets › Forums › Grid › DDL filtering has excessive delay after updaterow
Tagged: Cell, column, DropDownList, editor, grid, jqxDropDownList, jqxgrid, many columns, millisecond, time
This topic contains 3 replies, has 2 voices, and was last updated by Dimitar 9 years, 4 months ago.
-
Author
-
The grid I’m using has 20 columns, 8 with text filters and 12 with drop-down list filters. When a cell is changed in a column with a drop down list, I’m seeing delays on the order of 700 milliseconds. When changing a text field, it’s closer to 25 milliseconds.
This jsFiddle (http://jsfiddle.net/jcwren/cof8tegb/) demonstrates how rapidly the timing degrades as more DDL filtering columns are added. Selecting a different item in the ‘Division 1’ column, and I see times on the order of 13 milliseconds. Selecting a different item in the ‘Division 4’ column, and it jumps to 75 milliseconds (times vary, of course).
For each drop-down list filter column that’s disabled (by commenting out the “filter: ‘checkedlist'”), the time is reduced.
The setInterval() call with 1 millisecond is designed to emulate the delay of the application making an AJAX or web socket call to the server.
This delay also occurs on initial page load. Something in how the filtering drop-down lists are built and re-built is extremely inefficient.
Hello jcwren,
This is a perfectly normal behaviour. Columns with dropdownlist cell editors and dropdownlist filter widgets execute a more complex logic than the others in your grid, related to getting the editor’s value through the jqxDropDownList’s API, closing the dropdownlist, updating the grid’s cell and finally updating the dropdownlist filter widget with possible new values. It is also normal to take longer time to render the grid when there are even more columns. Make sure, however, that you are using version 3.8.0 in your project, as the handling of many columns has been significantly improved in this version.
Best Regards,
DimitarjQWidgets team
http://www.jqwidgets.com/It appears that it’s recalculating the drop-down filters for *all* the columns, rather than just the column that changed.
The grid rendering time is minimal, on the order of a couple milliseconds. With the example I provided, adding 20 to 25 milliseconds for each additional column is a LONG time, especially when there are only 5 possible choices per column, and 5 rows.
Most of the jqWidgets are pretty efficient, but the drop-down filter lists is an exception. Perhaps one of your engineers will run a profiler on it, and see where the slow-down is. It effectively makes DDL filtering unusable. A 700ms lag after changing a cell is extremely noticeable. Running through a grid changing ‘Yes’ to ‘No’ for a number of rows or columns becomes very painful.
If this can’t be improved, perhaps you have a suggestion for how to inhibit or defer the filter updating. I could possibly defer it until the mouse is idle for a few seconds, or the user pauses or clicks in the filter bar area.
Hi jcwren,
We think that 700 ms is a reasonable update time in this scenario and do not intend to change the grid’s behaviour. Nonetheless, thank you for your feedback.
Best Regards,
DimitarjQWidgets team
http://www.jqwidgets.com/ -
AuthorPosts
You must be logged in to reply to this topic.