none
Обновление dataGridView RRS feed

  • Вопрос

  • Всем привет!

    Ребят, обновляю ячейку в DataGridView, который привязан к таблице в источнике данных с помощью адаптера. Соответствующая строка должна получить статус Modified, однако этого не происходит, RowState по прежнему находится в состоянии Unchanged. Есть особенность - я обновляю ячейки с помощью propertyGrid. То есть PropertyGrid получает на вход строку DGV и отображает ее значения как свойства. Я изменяю свойство PropertyGrid и при этом меняется значение в строке DGV. Но при этом статус этой строки остается Unchanged. В чем может быть проблема?


    Андрей

    19 июня 2019 г. 5:55

Ответы

  • Здравствуйте,

    Возможно необходимо пользоваться: DataGridView.CellEndEdit Event


    Если Вам помог чей-либо ответ, пожалуйста, не забывайте жать на кнопку "Предложить как ответ" или "Проголосовать за полезное сообщение" Мнения, высказанные здесь, являются отражение моих личных взглядов, а не позиции корпорации Microsoft. Вся информация предоставляется "как есть" без каких-либо гарантий.

    • Помечено в качестве ответа АндрейGreen 24 июня 2019 г. 11:28
    19 июня 2019 г. 10:53
    Модератор

Все ответы

  • Здравствуйте,

    Возможно необходимо пользоваться: DataGridView.CellEndEdit Event


    Если Вам помог чей-либо ответ, пожалуйста, не забывайте жать на кнопку "Предложить как ответ" или "Проголосовать за полезное сообщение" Мнения, высказанные здесь, являются отражение моих личных взглядов, а не позиции корпорации Microsoft. Вся информация предоставляется "как есть" без каких-либо гарантий.

    • Помечено в качестве ответа АндрейGreen 24 июня 2019 г. 11:28
    19 июня 2019 г. 10:53
    Модератор
  • Максим, оно срабатывает, только если напрямую редактировать ячейку DGV. Если изменять значение через PropertyGrid, то ничего не происходит. 

    Смысл всего этого в том, что я потом хочу передать изменения в БД. А для этого я перебираю строки и ищу среди них строки со статусом Modified. Строка, в которой произошло изменение почему то получает статус Modified только после потери фокуса (SelectionMode = FullRowSelect). Это не есть хорошо! Необходимо, чтобы она получала статус Modified сразу, как только изменилось значение в ячейке.

    Может есть какие-нибудь события, которые обновляют сам DGV и все измененные строки сразу получают статус Modified? 


    Андрей

    19 июня 2019 г. 14:08
  • Так и должно быть, ведь изменения делаются в промежуточном буфере и записываются в источник данных только когда редактирование закончено. А это определяется по перемещению фокуса.

    Это есть хорошо и правильно, проверено десятилетиями работы. Не изобретайте велосипед, делайте как задумано.


    This posting is provided "AS IS" with no warranties, and confers no rights.

    19 июня 2019 г. 16:03
    Модератор
  • Так и должно быть, ведь изменения делаются в промежуточном буфере и записываются в источник данных только когда редактирование закончено. А это определяется по перемещению фокуса.

    Это есть хорошо и правильно, проверено десятилетиями работы. Не изобретайте велосипед, делайте как задумано.


    This posting is provided "AS IS" with no warranties, and confers no rights.

    Целиком и полностью согласен. Точно по такому же принципу работала сетка данных ещё в VB 5.0, т.е. более 20 лет назад.

    Alexandr_Smirnoff

    19 июня 2019 г. 20:09
  • Нужно было просто насильно вызывать метод EndEdit() у строки, над которой производились изменения в таблице. Тогда она сразу получает статут Modified и без потери фокуса.

    Андрей

    24 июня 2019 г. 11:30