powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / DataGrid завершение редактирования Row... Не сохранияет данные
22 сообщений из 22, страница 1 из 1
DataGrid завершение редактирования Row... Не сохранияет данные
    #32641433
kokgs__
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как завершить редактирование ячейки, т.е.
На форме есть грид
Загружается форма редактируется ячейка
Нажимается кнопка закрытия данные не сохраняются
Если перед зарытием сойти со строки на др строку или контрол то всё сохраниется
...
Рейтинг: 0 / 0
DataGrid завершение редактирования Row... Не сохранияет данные
    #32641450
viper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DataSet.AcceptChanges
_________________________________________________
Легче написать не правильную программу чем понять правильную (С) Alan Perlis
...
Рейтинг: 0 / 0
DataGrid завершение редактирования Row... Не сохранияет данные
    #32641472
кузя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
CurrencyManager cm=this.dataGrid1.BindingContext[this.dataGrid1.DataSource, this.dataGrid1.DataMember];
                if(cm!=null) cm.EndCurrentEdit();
...
Рейтинг: 0 / 0
DataGrid завершение редактирования Row... Не сохранияет данные
    #32641478
kokgs__
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Private Sub fTablesList_Closing(ByVal sender As Object, ByVal e As System.ComponentModel.CancelEventArgs) Handles MyBase.Closing

Dim ds As DataSet = CType(DG.DataSource, DataSet)
ds.AcceptChanges()
If ds.HasChanges Then
SaveData()
End If
.....
если имеется это ввиду то не работает
ds.HasChanges=false
...
Рейтинг: 0 / 0
DataGrid завершение редактирования Row... Не сохранияет данные
    #32641492
kokgs__
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
если вставлять вместо AcceptChanges то что предлагает кузя то всё равно не работает
...
Рейтинг: 0 / 0
DataGrid завершение редактирования Row... Не сохранияет данные
    #32641515
кузя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
ds.AcceptChanges()
If ds.HasChanges Then
  ' этот участок кода НИКОГДА не будет выполняться
End If
...
Рейтинг: 0 / 0
DataGrid завершение редактирования Row... Не сохранияет данные
    #32641534
kokgs__
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Согласен что не будтет это я уже зарисовался совсем
Но свойство HasChanges остаётся false если я закрываю форму во время редактирования ячейки
и поэтому всё равно не работает
...
Рейтинг: 0 / 0
DataGrid завершение редактирования Row... Не сохранияет данные
    #32641547
kokgs__
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Выход конечно есть
Положить на форму кновку "закрыть" там написать form.close
(грид будет терять фокус, завершая редактирование)

Но зачем входить в окно если есть наверное дверь :))
...
Рейтинг: 0 / 0
DataGrid завершение редактирования Row... Не сохранияет данные
    #32641557
кузя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
то что CurrencyManager заканчивает редактирование и заносит изменения в таблицу 100%. если изменения имели место, то HasChanges должна вернуть true. проверб еще раз отладчиком.
...
Рейтинг: 0 / 0
DataGrid завершение редактирования Row... Не сохранияет данные
    #32641587
kokgs__
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А как посмотреть имели ли вот именно эти изменения место и/или что в данный момент находится в редактируемом поле?

код:
MsgBox(ds.HasChanges)
cm = Me.DG.BindingContext(DG.DataSource, DG.DataMember)
cm.EndCurrentEdit()
MsgBox(ds.HasChanges)

два раза false
...
Рейтинг: 0 / 0
DataGrid завершение редактирования Row... Не сохранияет данные
    #32641604
кузя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
нужно поменять значение (что бы было смотреть) в строке 1 и колонке 1. после этого смотри в таблице, котрая редактируется, row 1 и column 1
...
Рейтинг: 0 / 0
DataGrid завершение редактирования Row... Не сохранияет данные
    #32641612
кузя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
как ты binding в гриде устанавливаешь ? datasource=dataset и datamember=tablename ?
...
Рейтинг: 0 / 0
DataGrid завершение редактирования Row... Не сохранияет данные
    #32641659
Sa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 kokgs__
EndCurrentEdit должен работать. Предоставьте больше кода.

Код: plaintext
 uid  =  S a
...
Рейтинг: 0 / 0
DataGrid завершение редактирования Row... Не сохранияет данные
    #32641670
кузя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
блин, и я на это купился.
в обработчике события формы Closing - облом [как будто откат текущего редактирования уже прошел на cancel и при продолжении работы на форме (если ей не дать закрыться) - восстанавливает состояние].
в других местах и событиях - ОК
---
счас придумаем workaround
...
Рейтинг: 0 / 0
DataGrid завершение редактирования Row... Не сохранияет данные
    #32641691
кузя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
наблюдение 2:

тем не менее, CurrencyManager.CancelCurrentEdit(); - работает всегда и везде.

наверное из-за того, что для модальных окон и осн. окна приложения нажатие на close равносильно DialogResult.Cancel (MSDN).

отсюда и логика databinding'a: canel - пожалуйста, а endedit - хрен вам.

выход: блокировать кнопку close (или чтоб ее вообще не видно было на форме) и добавить 2 button'a - OK и Cancel
...
Рейтинг: 0 / 0
DataGrid завершение редактирования Row... Не сохранияет данные
    #32641695
kokgs__
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
только у меня оно не модальное и не основное а mdichild
...
Рейтинг: 0 / 0
DataGrid завершение редактирования Row... Не сохранияет данные
    #32641707
kokgs__
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 sa
вот код если это ещё актуально
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
		DataTable tDataTable=new DataTable();
		System.Data.OleDb.OleDbCommandBuilder cb;
		System.Data.OleDb.OleDbDataAdapter tDataAdapter;
		private void Form1_Load(object sender, System.EventArgs e)
		{			
			System.Data.OleDb.OleDbConnection Conn = new System.Data.OleDb.OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;User ID=Admin;Data Source=db1.mdb;");
			Conn.Open();
			tDataAdapter= new System.Data.OleDb.OleDbDataAdapter("SELECT * FROM [Таблица1]",Conn);
			cb= new System.Data.OleDb.OleDbCommandBuilder(tDataAdapter);
			tDataAdapter.Fill(tDataTable);
			dataGrid1.SetDataBinding(tDataTable,"");						
		}
		private void Form1_Closing(object sender, CancelEventArgs e)
		{			
			BindingManagerBase dd;
			dd=dataGrid1.BindingContext[dataGrid1.DataSource] ;			
			dd.EndCurrentEdit();			
			tDataAdapter.Update(tDataTable);			
		}
...
Рейтинг: 0 / 0
DataGrid завершение редактирования Row... Не сохранияет данные
    #32641712
Sa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код это всегда актуально, попробуйте в Closing так:
Код: plaintext
1.
2.
3.
4.
5.
BindingManagerBase dd;
this.dataGrid1.EndEdit(null,this.dataGrid1.CurrentRowIndex, false);  //add this line, by Sa 
dd=dataGrid1.BindingContext[dataGrid1.DataSource] ;
dd.EndCurrentEdit();
tDataAdapter.Update(tDataTable);

Код: plaintext
 uid  =  S a
...
Рейтинг: 0 / 0
DataGrid завершение редактирования Row... Не сохранияет данные
    #32641720
кузя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kokgs__только у меня оно не модальное и не основное а mdichild
так в том то и дело, что нажатие на кнопку close в caption формы - приравнивается к нажатию кнопки Cancel. и все изменения при таком раскладе должны быть похерены. поэтому databinding и не дает завершить редактирования в гриде и сохранить данные в таблице, т.к. по его (их - MS) мнению - это пустые хлопоты.
...
Рейтинг: 0 / 0
DataGrid завершение редактирования Row... Не сохранияет данные
    #32641732
кузя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sa
Код: plaintext
this.dataGrid1.EndEdit(null,this.dataGrid1.CurrentRowIndex, false); //add this line, by Sa

и ведь работает.

ну а kokgs__ осталось малость подрихтовать под свои нужды (если ли там ColumnStyle, RowIndex в границах ...)

Sa = OK !
...
Рейтинг: 0 / 0
DataGrid завершение редактирования Row... Не сохранияет данные
    #32641775
kokgs__
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Завтра попробую....
...
Рейтинг: 0 / 0
DataGrid завершение редактирования Row... Не сохранияет данные
    #32641968
kokgs__
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всё как просто!!!
...
Рейтинг: 0 / 0
22 сообщений из 22, страница 1 из 1
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / DataGrid завершение редактирования Row... Не сохранияет данные
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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