Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Вопрос по откату изменений в DataSet
|
|||
|---|---|---|---|
|
#18+
Есть форма(Компания), на ней DataGrid(Список контрагентов), при выделении строки в DataGrid(Список контрагентов) и нажатии кнопки Edit открывается еще одна форма(Контрагент компании), по мимо прочего на ней есть еще один DataGrid(Список сотрудников контрагента) и кнопки New(Новый сотрудник),Edit(Модифицировать сотрудника),Delete(Удалить сотрудника).При работе с этими кнопками измененные данные заносятся в DataSet. Так же на форме(Контрагент компании) есть кнопки OK и Cancel. По кнопке ОК соответственно все изменения остаются в DataSet, для последующей передачи на SQL Server, а вот при нажатии Cancel все изменения в DataSet должны откатываться к исходному состоянию. Дело ослажняется тем, что в таблице с (Список сотрудников контрагента) храняться сотрудники всех контрагентов данной компании. Т.е. если допустим пользователь поработал с одним контрагентом добавил удалил сотрудников нажал ОК, потом поработал с другим контрагентом обавил удалил сотрудников нажал Cancel, то должны откатится изменения только по последнему контрагенту. Как сие организовать? Подобная конструкция не работает, пишет что не может получить данных от строки которая помечена как Deleted Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.07.2004, 14:07 |
|
||
|
Вопрос по откату изменений в DataSet
|
|||
|---|---|---|---|
|
#18+
в своё время делал так: для каждой popup формы создавался dataset, в который копировались данные для изменения/добавления/удаления [их получалось немного и дублирование было миним.]. по кнопке ОК они мержились (merge) с основным dataset'ом (по cancel ничего не делалось) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.07.2004, 14:34 |
|
||
|
Вопрос по откату изменений в DataSet
|
|||
|---|---|---|---|
|
#18+
играть на AcceptChanges/RejectChanges мне было нельзя, т.к. в конечном счете нужно было делать обновление в БД конкретно по твоему вопросу - достучаться до значений удаленных строк можно только так: Код: plaintext PS: извини за C# :-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.07.2004, 15:17 |
|
||
|
Вопрос по откату изменений в DataSet
|
|||
|---|---|---|---|
|
#18+
Понятно, сейчас попробую изобразить на VB.NET ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.07.2004, 15:32 |
|
||
|
Вопрос по откату изменений в DataSet
|
|||
|---|---|---|---|
|
#18+
Написал так: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. Но что делать со строками которые Added? Ведь у них как я понимаю нет версии Original и RejectChanges() не проходит? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.07.2004, 16:23 |
|
||
|
Вопрос по откату изменений в DataSet
|
|||
|---|---|---|---|
|
#18+
для Added строк - их нужно просто убивать в коллекции через Remove: Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.07.2004, 16:59 |
|
||
|
Вопрос по откату изменений в DataSet
|
|||
|---|---|---|---|
|
#18+
теперь у меня вопрос: а почему ты не делаешь Код: plaintext --- PS: возможно не видно фильтрации (отбора) строк для восстановления ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.07.2004, 17:07 |
|
||
|
Вопрос по откату изменений в DataSet
|
|||
|---|---|---|---|
|
#18+
Мне нельзя делать Reject для всей таблицы, т.к. там содержаться значения для разных контрагентов. ---- Дело ослажняется тем, что в таблице (Список сотрудников контрагента) храняться сотрудники всех контрагентов данной компании. Т.е. если допустим пользователь поработал с одним контрагентом добавил удалил сотрудников нажал ОК, потом поработал с другим контрагентом обавил удалил сотрудников нажал Cancel, то должны откатится изменения только по последнему контрагенту(где нажали Cancel). ---- ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.07.2004, 17:13 |
|
||
|
Вопрос по откату изменений в DataSet
|
|||
|---|---|---|---|
|
#18+
теперь увидел :-) филтрацию по коду а как же быть в случае повторного редактирования списка для одного и того же контрагента ? ведь откат то не учитывает, что было в предыдущий раз ОК - откатит то все изменения по этому к/агенту ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.07.2004, 17:19 |
|
||
|
Вопрос по откату изменений в DataSet
|
|||
|---|---|---|---|
|
#18+
Написал так : Код: plaintext 1. There is no Original data to access. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.07.2004, 17:21 |
|
||
|
Вопрос по откату изменений в DataSet
|
|||
|---|---|---|---|
|
#18+
это из-за того, что ты используешь индексер во внешнем цикле (и изменяешь список внутри этого цикла). сформируй массив (или ArrayList) из удаляемых записей, а затем уже в самостоятельном цикле по этому списку проводи Remove. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.07.2004, 17:30 |
|
||
|
Вопрос по откату изменений в DataSet
|
|||
|---|---|---|---|
|
#18+
Спасибо, попробую. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.07.2004, 17:38 |
|
||
|
Вопрос по откату изменений в DataSet
|
|||
|---|---|---|---|
|
#18+
Не получается, все равно пише тоже самое. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.07.2004, 17:54 |
|
||
|
Вопрос по откату изменений в DataSet
|
|||
|---|---|---|---|
|
#18+
извини, в тонкостях vb.net слабо ориентируюсь, но есть ли в нём оптимизатор для if ? может надо делать каскад из простых условий: Код: plaintext 1. 2. 3. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.07.2004, 18:14 |
|
||
|
Вопрос по откату изменений в DataSet
|
|||
|---|---|---|---|
|
#18+
2 dencat Еще я не врубился но сразу совет - фиксируй Rows.Count до цикла Код: plaintext 1. 2. 3. 4. Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.07.2004, 20:51 |
|
||
|
Вопрос по откату изменений в DataSet
|
|||
|---|---|---|---|
|
#18+
Кузя извини, в тонкостях vb.net слабо ориентируюсь, но есть ли в нём оптимизатор для if ? может надо делать каскад из простых условий: По умолчанию в VB.NET boolean short-circuited не используется, но если поставить вместо And - AndAlso, а вместо Or - OrElse то получится аналогично C#. 2 dencat попробуйте AndAlso у себя, либо следуйте совету по If Кузя Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.07.2004, 21:13 |
|
||
|
Вопрос по откату изменений в DataSet
|
|||
|---|---|---|---|
|
#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. 24. 25. 26. 27. 28. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.07.2004, 20:20 |
|
||
|
Вопрос по откату изменений в DataSet
|
|||
|---|---|---|---|
|
#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. 24. 25. 26. 27. 28. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.07.2004, 20:22 |
|
||
|
Вопрос по откату изменений в DataSet
|
|||
|---|---|---|---|
|
#18+
Прикольный код, тока тут на форуме прозвучала идея, что использовать For each удобнее и, работает он побыстрее, да и сам код покрасивше будет... Попробуй так: Код: plaintext 1. 2. 3. 4. 5. 6. 7. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.08.2004, 11:58 |
|
||
|
|

start [/forum/topic.php?fid=20&msg=32630212&tid=1438681]: |
0ms |
get settings: |
10ms |
get forum list: |
20ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
137ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
76ms |
get tp. blocked users: |
1ms |
| others: | 263ms |
| total: | 528ms |

| 0 / 0 |
