![]() |
Модераторы: gambit |
![]() ![]() ![]() |
|
EASports |
|
||||
Шустрый ![]() Профиль Группа: Участник Сообщений: 76 Регистрация: 14.12.2006 Репутация: нет Всего: нет |
Добрый день. Замучала такая проблема: делаю сохранение в xls-файл из виндового приложения; программа содержит dataGridView с кучей столбцов и строк, при двойном щелчке на одной из строк открывается окно редактирования записи. Сделав все, что нужно, вызываю процедуру закрытия окна редактирования, сохранения изменений в dataGridView и записи изменений в файл *.xls. Для работы с этим файлом использую DataSet. После формирования запроса на обновление и заполнения всех его параметров вызываю myOleDbDataAdapter.Update(myDataSet). Дак вот, если вызывать процедуру формирования запроса откуда-либо кроме как с кнопки на форме, где датасет расположен, сохранение не работает (DataSet не апдейтится, хотя все параметры в порядке). Если же поставить вызов этой процедуры на кнопку на форме всё прекрасно работает. Вызов следующий:
Процедура апдейта:
|
||||
|
|||||
Выхухоль |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 85 Регистрация: 9.10.2008 Где: Ташкент Репутация: нет Всего: 2 |
смутно представляется что творится у тебя на форме, ты закрываешь форму прежде чем обновлять данный, на каком событие ты пытаешься обновить данные, пробовал ли ты дебажить это дело?
|
|||
|
||||
EASports |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 76 Регистрация: 14.12.2006 Репутация: нет Всего: нет |
вобщем я пробовал даже вешать на таймер то событие, которое с кнопки срабатывает. делал влажок, который устанавливается, когда форма редактирования закрывается и через 30 миллисекунд вызов события, которое на клик по кнопке висит. Один хрен не пашет. сейчас проследил и заметил следующее.
Вот в этом коде
при дебаге программа не обращает внимания даже если я намеренно оставляю ошибки. Например я не открыл соединения (закомментарил строку cn.Open()) Программа этого даже не заметила, все сработало, но метод Update не вызвался. Строки как будто не несут смысловой нагрузки для компиллятора. Он их просто не исполняет. Блин. Может с конеткстом что... Даже на знаю. Очень странно. |
|||
|
||||
EASports |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 76 Регистрация: 14.12.2006 Репутация: нет Всего: нет |
Нашел ещё фишку. Если перед OleDbDataAdapter.Update() вызвать DataSet.AcceptChanges(), то сохранение не происходит и при нажатии на кнопку на форме (до этого по ней срабатывало). Если убираем DataSet.AcceptChanges(), на кнопку работает, программно - не работает. Может дело с каким-нибудь фокусом контрола? Может в dataGridView какие-то события отменяют изменения или еще что?..
|
|||
|
||||
EASports |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 76 Регистрация: 14.12.2006 Репутация: нет Всего: нет |
Все. Разобрался сам. Дело в фокусе. После каких-то действий с dataGridView, нужно по-любому перевести фокус на другой элемент. По-крайней мере я так сделал.
|
|||
|
||||
![]() ![]() ![]() |
Прежде чем создать тему, посмотрите сюда: | |
|
Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов. Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, stab, mr.DUDA, Exception. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Базы данных под .NET | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |