powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Обновление данных в гриде, после редактирования записи
3 сообщений из 3, страница 1 из 1
Обновление данных в гриде, после редактирования записи
    #39108464
Agapov_stas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Доброго времени суток всем!
Есть грид с источником записей:
Код: vbnet
1.
2.
3.
Dim strSQL3 As String = "Select tblPasport.*, Manufactory, Unit, nSubstance, Round((Do/Dt)^2,4) as DDif From " _
& " ((tblPasport LEFT JOIN tblManufactory ON tblPasport.idManufactory=tblManufactory.id) LEFT JOIN tblUnit ON tblPasport.idUnit=tblUnit.id)" _
& " LEFT JOIN tblSubstance ON tblPasport.idSubstance=tblSubstance.id"


Соурс у грида BindingSource - bsPasportDb.

1. Открываю форму редактирования записи, источником данных которого является все тот же bsPasportDb.
2. Изменяю запись.
3. Сохраняю внесенные изменения
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
Dim strSQL As String="UPDATE..."
Dim cmd As New OleDb.OleDbCommand(strSQL, conn)
With cmd.Parameters
'...
End With
conn.Open()
cmd.ExecuteNonQuery()
conn.Close()


4. Данные полетели в БД. Однако грид ничего об этом не знает(?).
Впрочем, когда изменяются значения относящиеся к главной таблице tblPasport, то и в форме редактирования и в гриде данные меняются, а вот те поля, которые через Join выводятся(имею ввиду, поля Manufactory , Unit , nSubstance ) уже не меняются, да и понятно, они были подгружены при старте, а значения их числовых кодов главной таблицы только что были изменены.

Обновлять весь датасет снова адаптером и подгружать заново в грид данные, чтобы обновить его? Или как?

Спасибо.
П.С. Начало тут .
...
Рейтинг: 0 / 0
Обновление данных в гриде, после редактирования записи
    #39110362
Фотография Cat2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Agapov_stas4. Данные полетели в БД. Однако грид ничего об этом не знает(?).
1. Да. Потому что надо создать DataTableAdapter, заполнять DataTable его методом Fill, а на изменения строк в таблице, в событие DataRowChange, вставлять DataTableAdapter.Update(DataTable)

17531047

2. Можно получить доступ к ячейкам грида через (bsPasportDb.Current as DataRowView) и делать в текущей строке изменение полей одновременно с выполнением запроса на сохранение. Но это гораздо хуже.

3. Для обработки изменений можно использовать средства Entity Framework, но я в этой теме не силен
...
Рейтинг: 0 / 0
Обновление данных в гриде, после редактирования записи
    #39110556
Agapov_stas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cat2Agapov_stas4. Данные полетели в БД. Однако грид ничего об этом не знает(?).
1. Да. Потому что надо создать DataTableAdapter, заполнять DataTable его методом Fill, а на изменения строк в таблице, в событие DataRowChange, вставлять DataTableAdapter.Update(DataTable)

Cat2, спасибо что откликнулись снова.
Я потому и не хотел создавать отдельный топик, чтобы не объяснять первопричину. Запрос то не обновляемый, посмотрите мой предыдущий пост. Ясное дело, что нужно адаптером обновить данные. Только в датасете "сидит" не обновляемый запрос. Вообщем, смысл объяснять то, что и так отображено в моем предыдущем топике , там же, где Вы и подсказали апдейтить запросом на insert в БД.
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Обновление данных в гриде, после редактирования записи
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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