Отображение изменений в гриде
Поделитесь пожалуйста опытом.
Вот в грид у меня загружено около 20000 строк. Каждая строка составлена из данных нескольких таблиц. И вот в какой то таблице происходит зменение данных. Как в моем гриде быстро отобразить это изменение. Обращаю внимание что перезагрузка полного справочника не реально, так как загрузка его занимает примерно 20 - 30 секунд. А изменения в таблицах происходят каждые 60 секунд.
Поделитесь пожалуйста опытом.
Возможно выходом может служить использование триггера с дополнительной таблицей в которой отображается изменившийся параметр и генерацией события на стороне сервера. Перечитать одну небольшую таблицу я думаю не накладно - далее использовать обработку события OnUpdateData DataSourse и обновлять только изменившиеся записи. Правда если ты используешь стандартный грид - боюсь он все равно будет перечитывать все записи.
Возможно выходом может служить использование триггера с дополнительной таблицей в которой отображается изменившийся параметр и генерацией события на стороне сервера. Перечитать одну небольшую таблицу я думаю не накладно - далее использовать обработку события OnUpdateData DataSourse и обновлять только изменившиеся записи. Правда если ты используешь стандартный грид - боюсь он все равно будет перечитывать все записи.
А как быть если клиентов в это время N. Как узнать что это строка с обновлением именно для этого клиента. Здесь не все так просто.
Другой вариант - ловить все события сервака. Ведь событие можно строить динамически. Вот в нем и передавать изменения. Но как ловить все эти события??? Программа ловит только зарегистрированные события (или сервак посылает только зарегистрированные)
А как быть если клиентов в это время N. Как узнать что это строка с обновлением именно для этого клиента. Здесь не все так просто.
Другой вариант - ловить все события сервака. Ведь событие можно строить динамически. Вот в нем и передавать изменения. Но как ловить все эти события??? Программа ловит только зарегистрированные события (или сервак посылает только зарегистрированные)
Передо мной стоит сейчас задача похожего типа, и при ее решении я, пока покрайней мере, остановился на разработке собственного класса для клиентского кеша, для которого выделяется специальная служебная таблица в базе. Кеши клиентов перечитывают таблицу и проверяют наличие объекта - работает достаточно быстро за счет использования связки set-multimap. Кеш который содержит обновившиеся объекты должен обновить данные. Задача еще не отработана полностью, поэтому немного сумбурно.