Signalr is a push technology, but your current implementation is not robust enough to allow data from an outside source to be pushed to your grid. A stop measure for this would be to include the ability to use a function in addition to a string for the server read function. This would enable a developer to chain a server call to refresh data when data changes are coming from a source outside your grids. A full implementation of signalr would be to code your grid to accept a signalr call from the server hub that directly updates client data from any source, as long as it conforms to the model for the grid. This could be possibly done through the use of a signalr grid group, that the server could push to. This group should be a group of one that maps to a specific grid. This would also allow multiple grids on a page/form to be independently updated. Currently your signalr grids interfere with each other if the calls are running at the same time on that same page/form, both synchronously and asynchronously.
Hello,
Actually the last approach seems like an optimal solution. The current setup works in that way because when one user updates an item the grids should get a notification to reflect this and they will reload. This does cause temporary changes to be lost however it is not certain under what conditions should the grid update. Do you have any examples of pages that demonstrate the targeted scenario so we could examine it? Any in-depth cases that showcase this will be highly appreciated.
Regards,
Angel Petrov
Progress Telerik
Virtual Classroom, the free self-paced technical training that gets you up to speed with Telerik and Kendo UI products quickly just got a fresh new look + new and improved content including a brand new Blazor course! Check it out at https://learn.telerik.com/.
Rudi Larno: I got round your scenario by using a kendo.observable for the grid source then using signalR on its own to pass data to the observable. That way I had very fine grained control of exactly what was updated. Kendo should really offer a "dataReceived" or something to allow to choose what to update and when on all datasources. The parse function is helpful but doesn't feel like it would solve this problem.
I spent quite a bit of time playing with this, the demos online for this are out of date and apply to signalR 1.x ... since 3.x is on the horizon it's likely Microsoft will yet again change everything but from what I could get working I found that often telerik was not aware that this was the case and the default response is "see demo here <link>". If Telerik is going to link to demos then they should at least be sure that when I nuget my packages it will accept a simple copy & paste from the demo and "just work". Beyond that, to ask any more seems to be too much to ask given the early nature of signalR.
Even the default demo has a severe issue: http://demos.telerik.com/aspnet-mvc/grid/signalr If one person is editing a line in the grid, and an event (Create/Update/Delete) arrives, that user loses his focus, and any editing in progress. We also uncovered that in fact the state of all (visible?) rows is being reset. We have a checkbox in front of every row, and an update from another user, causes the state of these checkboxes to be reset. Makes the grid unusable for the scenario we want.