powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / CurrentCellChanged..
24 сообщений из 24, страница 1 из 1
CurrentCellChanged..
    #32548445
Дудкин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Маленький вопрос.
Я хочу после редактирования одной любой ячейки в DataGrid вызывать Update
dataset'a..

допустим можно поместить update в событие CurrentCellChanged, но как
проверить редактировалась ли запись?


можно, наверное, сравнивать значения поля до входа и после и если они не равны, то делать update датасета..
но если я буду просто скакать по ячейкам, то эта процедурка будет каждый раз вызываться...

а как делаете Вы? как правильно?
...
Рейтинг: 0 / 0
CurrentCellChanged..
    #32548470
Sa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дудкин
Я хочу после редактирования одной любой ячейки в DataGrid вызывать Update
dataset'a..
допустим можно поместить update в событие CurrentCellChanged, но как
проверить редактировалась ли запись?

можно, наверное, сравнивать значения поля до входа и после и если они не равны, то делать update датасета..
но если я буду просто скакать по ячейкам, то эта процедурка будет каждый раз вызываться...


Вообще не используем CurrentCellChanged. Используем eventы RowChanged , или ColumnChanged класса DataTable.
...
Рейтинг: 0 / 0
CurrentCellChanged..
    #32548478
Дудкин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а если я не хочу заморачиваться с Table? или это невозможно?
и, если не затруднит, можно примерчик (только обработку этих событий)
...
Рейтинг: 0 / 0
CurrentCellChanged..
    #32548498
Sa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>а если я не хочу заморачиваться с Table? или это невозможно?
и, если не затруднит, можно примерчик (только обработку этих событий)

Вообще то всегда лучше абстрагироваться от элементов управления, и переносить всю логику с "верхнего уровня", "на нижний"

Ведь фактически изменения в DataGrid ведут за собой изменения в вашем DataTable. Подписываясь на события которого вы адекватно реагируете на все изменения.

Вам пример с ColumnChanged или RowChanged?
...
Рейтинг: 0 / 0
CurrentCellChanged..
    #32548507
Дудкин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
пример какой не жалко..
мне бы идею понять...
...
Рейтинг: 0 / 0
CurrentCellChanged..
    #32548546
Sa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да оба не жалко :-)
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
AddHandler myDataSet.Tables("myTableName").RowChanged, AddressOf MyRowChanged ' подпишимся на RowChanged
AddHandler myDataSet.Tables("myTableName").ColumnChanged, AddressOf MyColumnChanged  ' подпишимся на ColumnChanged

    Public Sub MyRowChanged(ByVal Sender As Object, ByVal e As DataRowChangeEventArgs)
        MsgBox("Row changed")
    End Sub

    Public Sub MyColumnChanged(ByVal sender As Object, ByVal e As System.Data.DataColumnChangeEventArgs)
        MsgBox("Column changed")
    End Sub
...
Рейтинг: 0 / 0
CurrentCellChanged..
    #32548561
Дудкин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Sa
Спасибо!

Есть ли еще какие-нибудь нестандартные решения?
У программеров ведь работа творческая :)
...
Рейтинг: 0 / 0
CurrentCellChanged..
    #32548609
Sa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>Есть ли еще какие-нибудь нестандартные решения?

Целый вагон и тележка :-)

P.S. :-))) Всегда считал что это стандартное решение.
...
Рейтинг: 0 / 0
CurrentCellChanged..
    #32551936
Дудкин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Sa
СПЕШУ СКАЗАТЬ ОГРОМНОЕ СПАСИБО ЗА ПРИМЕРЫ!!! Только счас удалось их реализовать (до этого были другие задачи) - работает все как надо :)
...
Рейтинг: 0 / 0
CurrentCellChanged..
    #32552034
Дудкин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Слегка поторопился, работает не совсем как хотелось бы...
добавил в eventы RowChanged и ColumnChanged
aCont.Update(dsCont)...

кусочек кодаPublic Sub contRowChanged(ByVal Sender As Object, ByVal e As DataRowChangeEventArgs)
'MsgBox("Row changed")
aCont.Update(dsCont)
End Sub

Public Sub MyColumnChanged(ByVal sender As Object, ByVal e As System.Data.DataColumnChangeEventArgs)
'MsgBox("Column changed")
aCont.Update(dsCont)
End Sub

вижу:
когда перепрыгиваю на другой столбец(ColumnChanged), то изменения в таблицу не вносятся (как будто aCont.Update(dsCont) не срабатывает), а когда RowChanged, то все Ок..
как обойти эту ситуевину?
...
Рейтинг: 0 / 0
CurrentCellChanged..
    #32552100
Sa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дудкин
вижу:
когда перепрыгиваю на другой столбец(ColumnChanged), то изменения в таблицу не вносятся (как будто aCont.Update(dsCont) не срабатывает), а когда RowChanged, то все Ок..
как обойти эту ситуев


Используйте RowChanged, но при определенных условиях RowChanged не срабатывает или срабатывает всего один раз (что бывает очень удобно)

В дополнение к этой теме:
http://dotnetgrains.sql.ru/issues/issue12.htm#2

И вообще рекомендую подписаться на эту рассылку от hDrummer.
...
Рейтинг: 0 / 0
CurrentCellChanged..
    #32552778
Дудкин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо, подписался.. А если не секрет, то как сделать, чтобы не потерялись изменения в ячейке? Программно перепрыгивать на другую строчку? Это будет некрасиво и, думаю, шокирует юзеров..
...
Рейтинг: 0 / 0
CurrentCellChanged..
    #32553405
Sa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ДудкинСпасибо, подписался.. А если не секрет, то как сделать, чтобы не потерялись изменения в ячейке? Программно перепрыгивать на другую строчку? Это будет некрасиво и, думаю, шокирует юзеров..

В любой момент можно "закоммитить" изменения при помощи метода EndEdit().
...
Рейтинг: 0 / 0
CurrentCellChanged..
    #32553677
Дудкин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нет, уважаемый Sa.. не хочет он такое кушать..
Кусочек кодаPublic Sub MyColumnChanged(ByVal sender As Object, ByVal e As System.Data.DataColumnChangeEventArgs)
'MsgBox("Column changed")
contRow.EndEdit()
aCont.Update(dsCont)
End Sub
...
Рейтинг: 0 / 0
CurrentCellChanged..
    #32553692
Дудкин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...я хотел сказать что изменения не вносятся
...
Рейтинг: 0 / 0
CurrentCellChanged..
    #32553712
Sa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну тогда для начала надо точно определить задачу.

Итак,
вы редактируете грид (записи не добавляете???), при изменении значения в любом поле, неоходимо немедленно отсылать изменения в БД.

Правильно я понял.
...
Рейтинг: 0 / 0
CurrentCellChanged..
    #32553715
Дудкин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да, sa, именно так
...
Рейтинг: 0 / 0
CurrentCellChanged..
    #32553719
Дудкин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Записи я не добавляю...
...
Рейтинг: 0 / 0
CurrentCellChanged..
    #32553838
Sa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Тогда попробуйте так:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
Public Sub contRowChanged(ByVal Sender As Object, ByVal e As DataRowChangeEventArgs)
   aCont.Update(dsCont)
End Sub

Public Sub MyColumnChanged(ByVal sender As Object, ByVal e As System.Data.DataColumnChangeEventArgs)

    Dim crm as CurrencyManager = Ctype(me.BindingContext(me.dataGrid1.DataSource, Me.dataGrid1.DataMember), CurrencyManager)
    crm.EndCurrentEdit();

End Sub
...
Рейтинг: 0 / 0
CurrentCellChanged..
    #32553912
Дудкин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Уважаемый Sa, я прошу прощения.. наверное фиксация изменений после редактирования каждой отдельной ячейки (часики и притормаживание) будет нервировать юзера... т. е. наверное лучше всеже фиксировать изменения в строке...
а как все-таки сделать что если допустим юзер отредактировал значения в строке, не перепрыгнул на другую строку и пошел давить на кнопки... не перепрыгнул на другую строку - значит изменения не внеслись, следовательно они потерялись...
...
Рейтинг: 0 / 0
CurrentCellChanged..
    #32553979
Sa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ДудкинУважаемый Sa, я прошу прощения.. наверное фиксация изменений после редактирования каждой отдельной ячейки (часики и притормаживание) будет нервировать юзера... т. е. наверное лучше всеже фиксировать изменения в строке...
а как все-таки сделать что если допустим юзер отредактировал значения в строке, не перепрыгнул на другую строку и пошел давить на кнопки... не перепрыгнул на другую строку - значит изменения не внеслись, следовательно они потерялись...

Да вообще то ничего никогда не теряется :-)

При такой постановке, я проблемы вообще не вижу. Как только пойдет давить по кнопкам сработает RowChanged, переходить на другую строку не обязательно.
...
Рейтинг: 0 / 0
CurrentCellChanged..
    #32554773
Дудкин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Действительно :-) .
Спасибо, Sa.
...
Рейтинг: 0 / 0
CurrentCellChanged..
    #32555033
Дудкин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Никак не могу закончить с этим вопросом...
Сидел счас, экспериментировал с обновлением записей.
Меняю запись в одной ячейке, перепрыгиваю на соседний столбец, закрываю форму (все приложение) - изменение НЕ сохраняется :-(
...
Рейтинг: 0 / 0
CurrentCellChanged..
    #32555399
Sa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дудкин
Меняю запись в одной ячейке, перепрыгиваю на соседний столбец, закрываю форму (все приложение) - изменение НЕ сохраняется :-(

У формы есть событие Closing, поместите туда:
Код: plaintext
1.
2.
    Dim crm as CurrencyManager = Ctype(me.BindingContext(me.dataGrid1.DataSource, Me.dataGrid1.DataMember), CurrencyManager)
    crm.EndCurrentEdit();
...
Рейтинг: 0 / 0
24 сообщений из 24, страница 1 из 1
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / CurrentCellChanged..
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]