Форум программистов, компьютерный форум, киберфорум
C#: Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.53/64: Рейтинг темы: голосов - 64, средняя оценка - 4.53
 Аватар для Sergei
1513 / 780 / 103
Регистрация: 22.04.2008
Сообщений: 1,610

Не сохраняется изменение в строке из DataGridView

10.03.2009, 12:34. Показов 12337. Ответов 14
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравстуйте, у меня такой вопрос, вывожу данные из БД в компонент DataGridView, я выбираю строку для редактирования и допустим изменяю значение какой-либо ячейки, и также у меня есть кнопка при нажатии которой сохраняются изменеия в БД
вот код
C#
1
2
3
4
5
6
7
8
9
 private void saveDataToolStripMenuItem_Click(object sender, EventArgs e)
        {
            if (oleCon.State == ConnectionState.Closed)
            {
                oleCon.Open();
            }
            oleAdapter.Update(dsFC);            
            toolStripStatusLabel1.Text = "Data saved!";
        }
dsFC - объект DataSet который и является DataSource для DataGridView
и вот проблема в том что если я редактирую какую-либо строку, и если после редактирования не выбираю другую строку то изменения не сохраняются при нажатии данной кнопки, а если изменил ячейку в одной строке и прешел на другую то изменения сохраняются.Подскажите как сделать так, чтобы изменения сохранялись вне зависимости от того выбрал я другу строку или нет может надо как-то настроить компонент DataGridView ?
Зарание спасибо!
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
10.03.2009, 12:34
Ответы с готовыми решениями:

Datagridview не сохраняется в базу
Ниже приведен код кнопки сохранения из Datagridview в базу, но во время тестирования программы и нажатия этой кнопки выскакивает...

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

SQLite C# + dataGridView Не сохраняется нулевая строка
1 При изменении dataGridView программным способом не сохраняется нулевая строка по индексу хотя все остальные сохраняются . 2 При...

14
1923 / 428 / 41
Регистрация: 12.07.2007
Сообщений: 2,062
10.03.2009, 13:36
У DataGridView какие-нибудь события перегружены?
1
Комбайнёр
 Аватар для MAcK
1606 / 704 / 77
Регистрация: 27.05.2008
Сообщений: 2,535
10.03.2009, 14:01
Перед сохранением вызови
C#
1
GridView.EndEdit();
2
 Аватар для Sergei
1513 / 780 / 103
Регистрация: 22.04.2008
Сообщений: 1,610
10.03.2009, 14:56  [ТС]
Спасибо большое!

Добавлено через 1 минуту 7 секунд
Никаких методов DataGridView не перегружал. Как попробую ваш метод так дам знать.
0
 Аватар для Sergei
1513 / 780 / 103
Регистрация: 22.04.2008
Сообщений: 1,610
26.03.2009, 11:08  [ТС]
Ничего из выше сказанного не помогло может у кого есть еще какие-то предложения по этому вопросу?
0
 Аватар для alexbog80
0 / 0 / 1
Регистрация: 18.03.2009
Сообщений: 32
29.04.2009, 07:53
Думаю что возможно вызывать метод oleAdapter.Update(dsFC); или же даже весь метод saveDataToolStripMenuItem_Click из RowStateChangen
0
0 / 0 / 0
Регистрация: 01.06.2009
Сообщений: 7
01.06.2009, 20:34
Маюсь с абсолютно аналогичной проблемой, и чего только уже и не пробовал, как бы путь решения проблемы нащупан, но как конкретно сообщить датагриду, что ему пора бы применить внесенные изменения или закончить процесс редактирования - глубокий вопрос, все старые способы решения проблемы вызовом типа endedit к сожалению не помогают.

Ещё есть существует проблема обновления данных из последней строки в гриде, в случае, если стоит
C#
1
datagrid.AllowUserAddRows = false;
0
 Аватар для Sergei
1513 / 780 / 103
Регистрация: 22.04.2008
Сообщений: 1,610
01.06.2009, 21:17  [ТС]
Так я решил данную проблему следующим образом перед вызовом
метода Update() для адаптера данных я временно устанваливаю фокус на другой
контрол например textbox1.Focus(); потом возвращаю фокус ввода в datagridview
вот и все работает.
2
0 / 0 / 0
Регистрация: 01.06.2009
Сообщений: 7
01.06.2009, 22:11
Точно ! Но к сожалению не работает, почему то у меня, скорректируйте, если что не так
C#
1
2
3
4
this.dateTimePicker1.Focus();
            this.dataGrid1.EndEdit();
            this.dataGrid1.Focus();
            this.update_base(); // обновление базы
0
 Аватар для Sergei
1513 / 780 / 103
Регистрация: 22.04.2008
Сообщений: 1,610
02.06.2009, 09:58  [ТС]
Во-первых я использую DataGridView
Во-вторых при обновлении БД я обновляютаблицу
у Вас же не правлильно написано нужно так
C#
1
2
3
            this.dateTimePicker1.Focus();            
            this.update_base(dataset1); // обновление базы
           this.dataGrid1.Focus();
1
0 / 0 / 0
Регистрация: 01.06.2009
Сообщений: 7
02.06.2009, 19:03
this.update_base(); - процедура моя, в ней как раз есть adapter.update(dataTable);
так что использование dataset для внесения изменений не нужно в данном случае.

Ну а насчет порядка хз, домой приду - посмотрю. Ощущение, что не поможет )

Добавлено через 5 часов 15 минут 30 секунд
Во-первых я использую DataGridView
А я же что по вашему использую?

МНе кажется вы не совсем внимательно прочитали моё сообщение.
0
0 / 0 / 0
Регистрация: 01.06.2009
Сообщений: 7
04.06.2009, 12:25
Заметил ещё одну проблему - чтобы сохранились изменения в ЛЮБОЙ ячейке необходимо перейти (кликнуть мыхой) на другой строке, если этого не сделать, то изменения не применятся. Как сделать так, чтобы всё это работало автоматически и не доставляло лишних неудобств пользователям ?
0
1 / 1 / 0
Регистрация: 25.04.2009
Сообщений: 8
10.06.2009, 21:38
private void button1_Click(object sender, EventArgs e)
{
вашаБДTableAdapter.Update(вашаDataSet1.в ашаBase);

}

У меня это было для обновления DataGridView

Добавлено через 3 минуты 27 секунд
Вот опытные прогеры здесь нужны чтобы все через Триггераы сделать , тогда будет очень практично !
Но я Триггеры писать не умею .
0
Amado
23.05.2010, 00:25
лично я делаю так
C#
1
2
3
4
5
6
7
                    Int32 i=dgRequestForProduct.CurrentCell.RowIndex;                    
                    dgRequestForProduct.Rows[i].Cells[6].Value = 1;
                    dgRequestForProduct.Rows[i].Cells[5].Selected = false;
                    dgRequestForProduct.CurrentCell = null;
                    dgRequestForProduct.Rows[i].Cells[5].Selected = true;
                    requestforproductTableAdapter.Update(forcombaseDataSet.requestforproduct);
                    forcombaseDataSet.requestforproduct.AcceptChanges();
1 / 1 / 0
Регистрация: 21.03.2014
Сообщений: 10
11.04.2018, 11:13
Всем привет!
Тоже маялся с этой проблемой. После изменения нескольких строк в datagridview сохраняю в базу, закрываю окно изменения данных, выхожу из программы. Снова запускаю программу, открываю окно изменения данных и... сохранилось только часть записей блин. Использовал разные способы в том числе из этой темы и ничего. Решение подсказал коллега ))) банальнейшее и связано с архитектурой. В общем datagridview не предназначен для изменения данных несмотря на то, что он частично может изменять данные в dataset и базе. Надо сохранять записи не в datagridview.rows[index].cells[index].value, а в dataSet.Tables["имя"].rows[rowindex][cellindex] = textbox.text; ))))))))))))) И все проблемы исчезают! После изменения таблиц не забудьте обновить datagridview1.update();
Откуда коллега это узнал? Обычное архитектурное умозаключение исходя из прочитанных множества книг. В общем господа надо читать матчасть ADO.NET от корки до корки и ещё пару книг по архитектуре windows приложений, а не примеры с форумов. Иначе мы не программисты! Архитектура не менее важна, чем знание компонентов библиотек.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
11.04.2018, 11:13
Помогаю со студенческими работами здесь

Не сохраняется последняя добавленная в DataGridView картинка
Имеется dataGridView, в одной из колонок содержатся изображения (загружаются с помощью OpenFileDialog при двойном щелчке на ячейку), есть...

Datagridview не сохраняется в базу: требуется действительный InsertCommand
Я сделала приложение-анкету, информация из TextBox и RadioButton сохраняется в datagridview, по нажатию на кнопку "Продолжить"...

Последнее изменение выделенной ячейки не сохраняется в БД
Здравствуйте, имеется dataGrid. При нажатии определенной кнопки происходят изменения в ячейках выделенной строки. Столкнулся с...

Изменение данных в строке таблицы dataGridView
Необходимо изменить строку таблицы через форму, прописал следующим образом private void button2_Click(object sender, EventArgs e) ...

Datagridview остаться на той строке, где произошло изменение
Всем привет.Подскажите как решить проблему.Есть datagridview, в ней много записей, при редактирование записей, используется tableadapter...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11680&d=1772460536 Одним из. . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru