You could add a time column to your tables, update that time column every time you update something in a row and then just load back the data that has changed. That way, you can have a timer load back the rows that have been changed since your last load and refresh it. This could be like every 5 secs or something so that propagating the changes from the database to your multiple client UIs would take 5 secs maximum.
It still isnt as good as a database event and you CANNOT depend on this to ensure concurrency safety, but it should do the trick of updating the UI as the user is looking at it...