Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / DataGrid завершение редактирования Row... Не сохранияет данные / 22 сообщений из 22, страница 1 из 1
09.08.2004, 17:26
    #32641433
kokgs__
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DataGrid завершение редактирования Row... Не сохранияет данные
Как завершить редактирование ячейки, т.е.
На форме есть грид
Загружается форма редактируется ячейка
Нажимается кнопка закрытия данные не сохраняются
Если перед зарытием сойти со строки на др строку или контрол то всё сохраниется
...
Рейтинг: 0 / 0
09.08.2004, 17:33
    #32641450
viper
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DataGrid завершение редактирования Row... Не сохранияет данные
DataSet.AcceptChanges
_________________________________________________
Легче написать не правильную программу чем понять правильную (С) Alan Perlis
...
Рейтинг: 0 / 0
09.08.2004, 17:43
    #32641472
кузя
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DataGrid завершение редактирования Row... Не сохранияет данные
Код: plaintext
1.
CurrencyManager cm=this.dataGrid1.BindingContext[this.dataGrid1.DataSource, this.dataGrid1.DataMember];
                if(cm!=null) cm.EndCurrentEdit();
...
Рейтинг: 0 / 0
09.08.2004, 17:48
    #32641478
kokgs__
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DataGrid завершение редактирования Row... Не сохранияет данные
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
09.08.2004, 17:57
    #32641492
kokgs__
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DataGrid завершение редактирования Row... Не сохранияет данные
если вставлять вместо AcceptChanges то что предлагает кузя то всё равно не работает
...
Рейтинг: 0 / 0
09.08.2004, 18:05
    #32641515
кузя
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DataGrid завершение редактирования Row... Не сохранияет данные
Код: plaintext
1.
2.
3.
ds.AcceptChanges()
If ds.HasChanges Then
  ' этот участок кода НИКОГДА не будет выполняться
End If
...
Рейтинг: 0 / 0
09.08.2004, 18:12
    #32641534
kokgs__
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DataGrid завершение редактирования Row... Не сохранияет данные
Согласен что не будтет это я уже зарисовался совсем
Но свойство HasChanges остаётся false если я закрываю форму во время редактирования ячейки
и поэтому всё равно не работает
...
Рейтинг: 0 / 0
09.08.2004, 18:16
    #32641547
kokgs__
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DataGrid завершение редактирования Row... Не сохранияет данные
Выход конечно есть
Положить на форму кновку "закрыть" там написать form.close
(грид будет терять фокус, завершая редактирование)

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

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

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

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

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

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

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

выход: блокировать кнопку close (или чтоб ее вообще не видно было на форме) и добавить 2 button'a - OK и Cancel
...
Рейтинг: 0 / 0
09.08.2004, 20:01
    #32641695
kokgs__
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DataGrid завершение редактирования Row... Не сохранияет данные
только у меня оно не модальное и не основное а mdichild
...
Рейтинг: 0 / 0
09.08.2004, 20:11
    #32641707
kokgs__
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DataGrid завершение редактирования Row... Не сохранияет данные
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
09.08.2004, 20:16
    #32641712
Sa
Sa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DataGrid завершение редактирования Row... Не сохранияет данные
Код это всегда актуально, попробуйте в 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
09.08.2004, 20:21
    #32641720
кузя
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DataGrid завершение редактирования Row... Не сохранияет данные
kokgs__только у меня оно не модальное и не основное а mdichild
так в том то и дело, что нажатие на кнопку close в caption формы - приравнивается к нажатию кнопки Cancel. и все изменения при таком раскладе должны быть похерены. поэтому databinding и не дает завершить редактирования в гриде и сохранить данные в таблице, т.к. по его (их - MS) мнению - это пустые хлопоты.
...
Рейтинг: 0 / 0
09.08.2004, 20:37
    #32641732
кузя
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DataGrid завершение редактирования Row... Не сохранияет данные
Sa
Код: plaintext
this.dataGrid1.EndEdit(null,this.dataGrid1.CurrentRowIndex, false); //add this line, by Sa

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

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

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


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