
Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
|
22.04.2007, 18:32
|
|||
|---|---|---|---|
DataTable.GetChanges... |
|||
|
#18+
Всем привет! Выбираю через адаптер данные в Datatable Код: plaintext 1. 2. 3. 4. 5. 6. Связываю с контролами Код: plaintext 1. Меняю поле, сохраняю Код: plaintext 1. 2. Получаю в Changes nil. Хотя AProject содержит измененные данные. В чем может быть подвох? P.S. Соединение открыто постоянно. Может быть с этим связано? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
23.04.2007, 11:34
|
|||
|---|---|---|---|
DataTable.GetChanges... |
|||
|
#18+
дело не в коннекте. Когда ты создаешь Binding, его свойство DataSourceUpdateMode (т.е. когда данные из контрола закоммитятся в таблицу обратно) имеет значение DataSourceUpdateMode.OnValidation - это означает, что данные в таблицу запишутся когда будет проведена валидация в контроле, это в свою очередь происходит тоже по разным причинам но не само по себе (переход к следующему контролу, смена текущей записи в таблице и т.д.). Т.е. поменяв текст в контроле и не переходя никуда нажав на сохранение ты не запишешь данные обратно в таблицу. На счет рекоммендаций сложней, не знаю как правильней всего, я например в зависимости от ситуации ставлю DataSourceUpdateMode.OnPropertyChanged и еще при сохранении пробегаю по контролам и вызываю Код: plaintext 1. 2. 3. 4. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
23.04.2007, 12:09
|
|||
|---|---|---|---|
DataTable.GetChanges... |
|||
|
#18+
chpasha, порою в этом направлении, но!!! в datatable содержатся измененные данные! Т.е. данные изменены, а rowstate нет... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
23.04.2007, 12:25
|
|||
|---|---|---|---|
DataTable.GetChanges... |
|||
|
#18+
ищи где накосячил, пока AcceptChanges не будет вызван (явно или не явно) и данные действительно изменены, все будет с RowState в порядке. Покажи код, где сохраняешь данные, а где смотришь какие изменения. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
23.04.2007, 13:03
|
|||
|---|---|---|---|
DataTable.GetChanges... |
|||
|
#18+
авторищи где накосячил, пока AcceptChanges не будет вызван (явно или не явно) и данные действительно изменены, все будет с RowState в порядке. Покажи код, где сохраняешь данные, а где смотришь какие изменения. Где он неявно может вызываться? Данные в datatable принудительно не закидываются, через биндинг делаются... смотри скрин. Первый рисунок -- после загрузки данных, второй перед сохранением и состояние строки... получается, где-то скрытно AcceptChanges вызвался. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
23.04.2007, 13:37
|
|||
|---|---|---|---|
DataTable.GetChanges... |
|||
|
#18+
я код просил, по-твоему по картинкам можно нехило заценить, в каком месте AcceptChanges() вызывается ;-) . Лучше потратил бы время вместо рисования на трассировку программы и определения мест, где RowState еще Modified (и есть ли такие) и мест, где он уже снова Unchanged. В конце концов подпишись на событие DataColumnChanged (DataRowChanged) и посмотри происходит ли оно. Короче дебаг помогает лучше чем часы медитации на тему где грабли. По-скольку ты застрял на тривиальной проблеме, не трудно сделать вывод, что ты упустил где-то мелочь какую-то. Это ж вам не это, простой байндинг контрола. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
23.04.2007, 14:10
|
|||
|---|---|---|---|
DataTable.GetChanges... |
|||
|
#18+
А там больше нет кода. То, что привел в первом посте -- это все. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
23.04.2007, 14:46
|
|||
|---|---|---|---|
DataTable.GetChanges... |
|||
|
#18+
кстати о птичках - в коде и на картинке ты смотришь на таблицу AProject, а байндишь контрол к таблице Project, это как очепятка, или то что я подумал ;-) ??? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
23.04.2007, 15:32
|
|||
|---|---|---|---|
DataTable.GetChanges... |
|||
|
#18+
chpashaкстати о птичках - в коде и на картинке ты смотришь на таблицу AProject, а байндишь контрол к таблице Project, это как очепятка, или то что я подумал ;-) ??? Я знал, что кто-нибудь так да подумает ;) AProject - это параметр метода. Разумеется туда передается Project. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
23.04.2007, 15:41
|
|||
|---|---|---|---|
DataTable.GetChanges... |
|||
|
#18+
не знаю, по-нормальному все должно работать. проверь на простом примере, без параметров шмараметров. Кстати, ты я так понимаю под борландом пишешь, мож там какой косяк закрался. Пробуй с событиями DataColumnChanged (DataRowChanged) - смотри, вызываются ли они, и каков статус строк на тот момент. Ну НЕ МОЖЕТ такого быть, чтоб данные были изменены, а версия строк нет, полюбому ведь есть еще код, раз у нас тут уже параметры откуда-то всплыли, смотри короче, САМО никогда ничего не случается ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
23.04.2007, 15:48
|
|||
|---|---|---|---|
DataTable.GetChanges... |
|||
|
#18+
chpashaне знаю, по-нормальному все должно работать. проверь на простом примере, без параметров шмараметров. Кстати, ты я так понимаю под борландом пишешь, мож там какой косяк закрался. Пробуй с событиями DataColumnChanged (DataRowChanged) - смотри, вызываются ли они, и каков статус строк на тот момент. Ну НЕ МОЖЕТ такого быть, чтоб данные были изменены, а версия строк нет, полюбому ведь есть еще код, раз у нас тут уже параметры откуда-то всплыли, смотри короче, САМО никогда ничего не случается Я и сам тихо охреневаю.... Я, конечно, еще .нет готовить не научился, но что б до такой степени... Ничего не понимаю... Пробовал вешать обработчик на DataRowChanging -- не ловиться. Пишу в студии 2005 -- это Chrome. Вот выдрал примитивный пример: Код: 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. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95. 96. 97. 98. 99. 100. 101. 102. 103. 104. 105. 106. 107. 108. 109. 110. 111. 112. 113. 114. 115. 116. 117. 118. 119. 120. 121. 122. 123. 124. 125. 126. 127. 128. 129. 130. 131. 132. 133. 134. 135. 136. 137. 138. 139. 140. 141. 142. 143. 144. 145. 146. 147. 148. 149. 150. 151. 152. 153. 154. 155. 156. 157. 158. 159. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
23.04.2007, 16:40
|
|||
|---|---|---|---|
DataTable.GetChanges... |
|||
|
#18+
Угу, все правильно. Я вот как делаю (в примитиве, реально немного сложней) Код: plaintext 1. 2. bs.EndEdit() .То же самое происходит автоматом если перед сохранением менялась текущая позиция в таблице. Ваще-то где-то на форуме должен был быть топик по этой теме, вроде там предлагали универсальное решение. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
23.04.2007, 16:54
|
|||
|---|---|---|---|
DataTable.GetChanges... |
|||
|
#18+
chpashaУгу, все правильно. Я вот как делаю (в примитиве, реально немного сложней ) У-ф-ф-фф! Вроде заработало. chpasha , спасибо! Можешь скинуть пример что еще у тебя добавляется и зачем ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
23.04.2007, 17:11
|
|||
|---|---|---|---|
DataTable.GetChanges... |
|||
|
#18+
ничего особенного, в таком порядке 1) для каждого байндинга в контроле делаем WriteValue (что б точно быть уверенным, что данные из представления перекочевали в модель так сказать то бишь из контрола в таблицу) 2) EndEdit либо для BindingSource либо для текущей строки 3) метод HasChangesEx в нем не просто полагаюсь на GetChanges != null а еще для модифицированных строк проверяю отличаются ли значения текущей строки и первоначальной, потому что если ты изаменишь в строке поле сначала с А на Б а потом снова с Б на А то строка будет Modified - но фактически поле то не изменилось по сравнению с оригиналом, т.е. и сохранять его нефиг. Этот последний пункт с оглядкой на производительность, т.к. будут пробегаться столбцы для каждой измененной строки и сравниваться друг с другом - тут надо уже смотреть не сильно ли долго, не легче ли сохранить пустышку ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|

start [/forum/topic.php?fid=17&mobile=1&tid=1352839]: |
0ms |
get settings: |
8ms |
get forum list: |
16ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
168ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
66ms |
get tp. blocked users: |
1ms |
| others: | 245ms |
| total: | 527ms |

| 0 / 0 |
