|
|
|
Обновление datagridview через другую форму
|
|||
|---|---|---|---|
|
#18+
Есть такая проблема: мастер форма с гридом и детейл форма с текстбоксами, где редактирую или добавляю запись: мастер форм с гридом Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. детейл форм - кнопка закрытия: Код: plaintext 1. 2. 3. 4. 5. 6. 7. Собственно проблема: когда происходит добавление записи, то в гриде новая запись появляется иногда сразу, а иногда нет, т.е. через несколько добавлений могут появиться сразу две записи. Причем физически в базе они появляются сразу. Такое ощущение что они где-то в буфере застряли. Перепробовал несколько вариантов, найденных на форуме и в мсдн, с передачей в детейл форму датасетов и т.д. - результат одинаковый. Причем в другом проекте все работает без проблем (там только набор текстбоксов и имена таблиц другие). Прошу помощи: где я облажался-то? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.07.2006, 09:13 |
|
||
|
Обновление datagridview через другую форму
|
|||
|---|---|---|---|
|
#18+
Ладно уж скажу, но такую простую вещь столило бы знать. Она возникает только во 2-ом фреймворке. Там есть такой метод DataBind называется. Он был специально добавлен для минимизации трафика в режиме отсоединённого подлючения. Но стало не очень удобно. Попробуй создать оболочку для Sql чтобы не думать, вызвал ты его или забыл. Это не так просто, ибо все классы по работе с данными являются sealed. Поэтому прийдётся создать класс супероболочку и все свойства делегировать, ну как обычно это делается в COM. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.07.2006, 22:58 |
|
||
|
Обновление datagridview через другую форму
|
|||
|---|---|---|---|
|
#18+
TolyaЛадно уж скажу, но такую простую вещь столило бы знать. Она возникает только во 2-ом фреймворке. Там есть такой метод DataBind называется. Он был специально добавлен для минимизации трафика в режиме отсоединённого подлючения. Но стало не очень удобно. Попробуй создать оболочку для Sql чтобы не думать, вызвал ты его или забыл. Это не так просто, ибо все классы по работе с данными являются sealed. Поэтому прийдётся создать класс супероболочку и все свойства делегировать, ну как обычно это делается в COM. Спасибо конечно за инфу, но в данном конкретно случае меня интересует почему данные буферезуются где-то (причем не всегда!). И где находится способы этим управлять. Потому-что я перепробовал много вариантов с решениями из "официальных источников" по аналогичным проблемам и эти решения не работают в этом моем случае. Мне понятно что я что-то недопонимаю, но что? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.07.2006, 06:20 |
|
||
|
Обновление datagridview через другую форму
|
|||
|---|---|---|---|
|
#18+
Потестировал на разных компах и вот результат: этот код нормально работает на win xp (prof & home) и неработает на win2000. Версии framework одинаковые и на машине с win2000 стоят все текущие апдейты. Что это может быть? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.08.2006, 07:19 |
|
||
|
Обновление datagridview через другую форму
|
|||
|---|---|---|---|
|
#18+
Вынужден снова поднять тему т.к. наткнулся на аналогичное поведение в другом проекте. Причем не зависящее от версии ОС. Проблема в следующем: имеются две формы (из одной вызывается другая), в каждой свой dataset с одинаковыми таблицами. Если сделать обновление во второй форме, то в первой данные могут иногда не обновится, а иногда обновится частично, т.е. появится например не три записи а только две. Причем физически обновление данных происходит. Использовать один dataset, а не два, конечно можно, но интересует не системность появления этого бага. Такое ощущение что где-то в буфере сидят данные. Вопрос: кто-нибудь сталкивался с таким явлением или это результат только моих изысканий? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.09.2006, 09:03 |
|
||
|
Обновление datagridview через другую форму
|
|||
|---|---|---|---|
|
#18+
Kicel Использовать один dataset, а не два, конечно можно, но интересует не системность появления этого бага. Такое ощущение что где-то в буфере сидят данные. Вопрос: кто-нибудь сталкивался с таким явлением или это результат только моих изысканий? А вы можете воспроизвести это в тестовом проекте и разместить сюда, а мы уж посмотрим... Код: plaintext Posted via ActualForum NNTP Server 1.3 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.09.2006, 09:43 |
|
||
|
Обновление datagridview через другую форму
|
|||
|---|---|---|---|
|
#18+
Попробую объяснить на этой упрощенной схеме: Допустим есть 2 формы: 1-ая с гридом и 2-ая с текстбоксами. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. Как победить такое? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.09.2006, 09:22 |
|
||
|
Обновление datagridview через другую форму
|
|||
|---|---|---|---|
|
#18+
Добавлю: connections в формах открываю по новой. Может в этом засада? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.09.2006, 09:40 |
|
||
|
Обновление datagridview через другую форму
|
|||
|---|---|---|---|
|
#18+
Kicel Как победить такое? А вызов метода update у вас где? Код: plaintext Posted via ActualForum NNTP Server 1.3 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.09.2006, 10:07 |
|
||
|
Обновление datagridview через другую форму
|
|||
|---|---|---|---|
|
#18+
Sa Kicel Как победить такое? А вызов метода update у вас где? Код: plaintext А почему это имеет значение? В форме №1 я не делаю никаких изменений с данными - просто вывожу их в грид, а после формы №2 изменения точно происходят. Хотя я согласен - может именно тут я и заблудился: чтобы получить свежие данные в dataset мне нужно его как-то обновить? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.09.2006, 10:18 |
|
||
|
Обновление datagridview через другую форму
|
|||
|---|---|---|---|
|
#18+
OleDbDataAdapter tempDA = new OleDbDataAdapter("select * from company",cn); tempDA.Fill(ds, "temp"); -- а разве вот здесь я не получу свежие данные? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.09.2006, 10:25 |
|
||
|
Обновление datagridview через другую форму
|
|||
|---|---|---|---|
|
#18+
Sa Kicel Как победить такое? А вызов метода update у вас где? Код: plaintext Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. Это код на сохранение из второй формы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.09.2006, 10:43 |
|
||
|
Обновление datagridview через другую форму
|
|||
|---|---|---|---|
|
#18+
Kicel Это код на сохранение из второй формы. Может я чего не понимаю. Но правильный алгоритм действий должен быть примерно следующим: 1) изменили данные в DataSet или DataTable 2) вызвали метод Update вашего DataAdapter'а (У DataAdapter настроены комАнды Select, Insert,Delete, Update), для внесения изменений в БД. 3) Закомитили записи, например myDataTable.AcceptChanges() Код: plaintext Posted via ActualForum NNTP Server 1.3 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.09.2006, 11:01 |
|
||
|
Обновление datagridview через другую форму
|
|||
|---|---|---|---|
|
#18+
Sa Kicel Это код на сохранение из второй формы. Может я чего не понимаю. Но правильный алгоритм действий должен быть примерно следующим: 1) изменили данные в DataSet или DataTable 2) вызвали метод Update вашего DataAdapter'а (У DataAdapter настроены комАнды Select, Insert,Delete, Update), для внесения изменений в БД. 3) Закомитили записи, например myDataTable.AcceptChanges() Код: plaintext Спасибо за внимание! Если эти замечания относятся ко второй форме, т.е. где происходят все изменения - то приведенный вариант работает нормально - обновленные данные попадают в базу - я уверен, т.к. делал проверки (база Access - открыл-посмотрел-увидел изменения). Тот код, что я привел, уже не знаю какой по счету вариант, а до него были и по приведенной схеме (Select, Insert,Delete, Update и т.д.) Я думаю , что проблема в форме №1. Но где? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.09.2006, 11:23 |
|
||
|
Обновление datagridview через другую форму
|
|||
|---|---|---|---|
|
#18+
Все равно мне код во второй форме не нравиться. Kicel OleDbDataAdapter tempDA = new OleDbDataAdapter("select * from company",cn); tempDA.Fill(ds, "temp"); -- а разве вот здесь я не получу свежие данные? Добавьте до Fill Clear() и посмотрите, например так: Код: plaintext 1. 2. 3. Код: plaintext Posted via ActualForum NNTP Server 1.3 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.09.2006, 11:30 |
|
||
|
Обновление datagridview через другую форму
|
|||
|---|---|---|---|
|
#18+
Sa Все равно мне код во второй форме не нравиться. Kicel OleDbDataAdapter tempDA = new OleDbDataAdapter("select * from company",cn); tempDA.Fill(ds, "temp"); -- а разве вот здесь я не получу свежие данные? Добавьте до Fill Clear() и посмотрите, например так: Код: plaintext 1. 2. 3. Код: plaintext мне тоже код не нравится. попробовал clear() - результат тотже. может дело вот в этом: Код: plaintext после этой строки изменения есть, но может dataset их не видит? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.09.2006, 11:42 |
|
||
|
Обновление datagridview через другую форму
|
|||
|---|---|---|---|
|
#18+
Kicel dDA.UpdateCommand.ExecuteNonQuery(); после этой строки изменения есть, но может dataset их не видит? не надо так делать. не вижу смысла вызывать UpdateCommand таким образом, вызывайте Update() как я писал выше. Код: plaintext Posted via ActualForum NNTP Server 1.3 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.09.2006, 11:46 |
|
||
|
|

start [/forum/topic.php?fid=17&fpage=104&tid=1353151]: |
0ms |
get settings: |
9ms |
get forum list: |
20ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
36ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
76ms |
get tp. blocked users: |
2ms |
| others: | 196ms |
| total: | 360ms |

| 0 / 0 |
