Заполнение грида данными

rsolanov
Дата: 21.12.2009 21:39:57
Здравствуйте!
Я хотел бы понять принцип заполнения грида данными из БД.
Рассмотрим случай когда есть база данных, из нее с помощью адаптера данные заполняются в таблицу (DataTable) и затем с помощью BindingSource данные таблицы связываются с гридом. И тут есть один мне непонятный момент: при связке компонента BindingSource с гридом как я понимаю данные в грид не копируются, а отображаются посредством ссылок (Если взять Delphi VCL, там данные также по ссылкам связывались с гридом). Тогда появляется вопрос: почему при изменении данных в таблице, данные грида сразу же не меняются? Например, если вставить новую запись в таблицу, но она не добавится автоматически в грид. Почему данные автоматически не меняются в гриде с учетом фильтра и сортировки? Прошу помочь если кто знает, меня давно уже мучает данный вопрос. Спасибо за понимание.
rsolanov
Дата: 22.12.2009 16:38:02
Господа специалисты ИТ, прошу Вас подумать об этом. ))
Konst_One
Дата: 22.12.2009 16:39:27
потому-что теперь идеология отсоединённых датасетов
rsolanov
Дата: 22.12.2009 17:18:14
Konst_One
потому-что теперь идеология отсоединённых датасетов

Тут под словом "отсоединенный" Вы как я понимаю имеете в виду "отсоединенный от источника данных" (базы данных). А я говорю про то, когда данные добавляются (изменяются) не в базу данных, а в одну из таблиц датасета (локальную БД приложения).
А датасет и таблица через компонент BindingSource с гридом связана всегда.
Konst_One
Дата: 22.12.2009 17:25:12
ещё раз говорю что показывает отстоединённые данные. чтобы увидить изменения в источнике (базе данных) надо выполнить обновление датасета с помощью соответствующей команды
vagner
Дата: 22.12.2009 17:31:19
rsolanov,

не пробовали биндингу сказать, что его датасорс обновился? Или гриду.
D129
Дата: 23.12.2009 11:53:35
rsolanov
Господа специалисты ИТ, прошу Вас подумать об этом. ))

А о чем тут думать? данные в таблице - это целые числа, строки, реальные числа итп...
А в гриде - вариант текстбокса для их отображения.
Допустим, число в источнике изменилось. Но текстбокс на экране об этом только по ссылке на число узнать не может. Его надо "разбудить" - и тогда он возмет изменение, и нарисует его на экране.

Если бы вы программировали на чем-то, что было до IBM вам это было бы "элементарно".

:)
rsolanov
Дата: 24.12.2009 07:37:12
На самом деле все зависит от самой реализации датасета, BindingSource и грида. Давайте рассудим: датасет связан с BindingSource, а он в свою очередь, связан с гридом. Поэтому с помощью указателей возможно реализовать такую функциональность при которой действительно, например, при добавлении новой записи в датасете, сразу же добавлялась новая запись в гриде с учетом текущего фильтра и сортировки.