У меня есть DataGridView, который будет отображать записи (записи журнала) из базы данных. Количество записей, которые могут существовать одновременно, очень велико. Я хотел бы использовать функцию виртуального режима DataGridView для отображения страницы данных и для минимизации объема данных, которые должны быть переданы по сети в данный момент времени.
Опрос для данных не может быть и речи. Будет одновременно запущено несколько клиентов, каждый из которых находится в одной сети и просматривает записи. Если все они опрашивают данные, сеть будет работать очень медленно.
Данные доступны только для чтения пользователю; они не смогут редактировать что-либо из этого, просто просмотрите его. Мне нужно знать, когда обновления происходят в базе данных, и мне нужно обновлять экран с этими обновлениями соответственно в виртуальном режиме. Если страница данных, которую просматривает пользователь, содержит данные, которые изменились, он / она увидит эти обновления на этой странице. Если обновления были внесены в данные в базе данных, но не в данные, которые просматривает пользователь, то на экране пользователя ничего не изменится (возможно, просто полоса прокрутки, если записи были добавлены или удалены).
Мой нынешний подход заключается в использовании отслеживания изменений SQL-сервера с каркасом синхронизации. У каждого клиента есть локальный экземпляр SQL Server CE и файл базы данных, которые синхронизируются с основным сервером базы данных. Я использую информацию из события синхронизации, чтобы увидеть, были ли внесены какие-либо изменения в основную базу данных и синхронизированы ли они с клиентом. Мне нужно использовать здесь виртуальный режим DataGridView, потому что у меня не может быть одновременно загружено тысячи записей в DataGridView, в противном случае использование памяти идет вверх.
Основной проблемой сейчас является знание того, как использовать виртуальный режим для обеспечения беспрепятственного взаимодействия с пользователем, позволяя им прокручивать записи вверх и вниз, а также обновлять записи на лету, не мешая пользователю ненадлежащим образом. Кто-нибудь имел дело с этой проблемой раньше, и если да, где я могу увидеть, как они это сделали? Я просмотрел некоторые документы MSDN и примеры по виртуальному режиму. До сих пор я не нашел документации и / или примеров на их сайте, где объясняется, как делать то, что я пытаюсь выполнить.