Форум программистов, компьютерный форум, киберфорум
C#: Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.64/25: Рейтинг темы: голосов - 25, средняя оценка - 4.64
0 / 0 / 0
Регистрация: 13.03.2014
Сообщений: 21

Обновление DataGrid при добавлении новых данных

25.04.2014, 04:39. Показов 4772. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте. Возникла следующая проблема есть DataGrid который заполняться из БД, по нажатии на кнопку открывается форма ввода данных, которая добавляет строку в DataGrid и записывает все в БД. Проблема заключается в том что в БД данные добавляются а в DataGride появляется новая строчка но она не заполняется, как решить эту проблему?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
25.04.2014, 04:39
Ответы с готовыми решениями:

Ошибка при добавлении новых данных в бд
Доброго времени суток! При добавлении данных в столбец путь(выбирается фото, путь считывается в textbox, а из textbox в запросе этот...

При добавлении (удалении) данных в DataGrid не происходит обновление
Пытаюсь создать часть приложения, которая позволяет работать со списком пользователей (редактирование, добавление, удаление). Пишу с...

Как очистить ListBox при добавлении новых данных
Нужно чтоб при повторном нажатии кнопки, второе решение не добавлялось, а заменяло старое. Вот прога: double a =...

7
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
25.04.2014, 08:37
Текст программы покажи.
0
0 / 0 / 0
Регистрация: 13.03.2014
Сообщений: 21
25.04.2014, 09:22  [ТС]
заполнение DataGrid
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
        MySqlConnection myConnection = new MySqlConnection();
MySqlDataAdapter journalDataAdapter = new MySqlDataAdapter();
        DataSet myDataSet = new DataSet();
 
myConnection.ConnectionString = "Database=test;Data Source=localhost;User Id=root;Password=123";
 
            MySqlDataAdapter journalDataAdapter = new MySqlDataAdapter("select * from journal", myConnection);
            journalDataAdapter.Fill(myDataSet, "journal");
 
            MySqlDataAdapter subdivisionDataAdapter = new MySqlDataAdapter("select * from subdivision", myConnection);
            subdivisionDataAdapter.Fill(myDataSet, "subdivision");
 
            myDataSet.Tables["subdivision"].Columns["name"].Unique = true;
 
            // Установка связи таблиц 
            myDataSet.Relations.Add(new DataRelation("JournalSubdivision",
                myDataSet.Tables["subdivision"].Columns["Id"],
                myDataSet.Tables["journal"].Columns["Id_sub"]));
 
            dataGridView1.DataSource = myDataSet.Tables["journal"]; // в DataGrid
 
            dataGridView1.Columns["Id_sub"].Visible = false; // скрыть колонку с идентификатором
 
            var cmx_subdivision = new DataGridViewComboBoxColumn(); // добавить новую колонку
            cmx_subdivision.DataSource = myDataSet.Tables["subdivision"];
            cmx_subdivision.DisplayMember = "name"; // Отображать из subdivision
            cmx_subdivision.ValueMember = "Id";
            cmx_subdivision.DataPropertyName = "Id_sub"; // Для связи с journal
            cmx_subdivision.FlatStyle = FlatStyle.Flat;
            dataGridView1.Columns.Insert(3, cmx_subdivision);
Добавление в БД
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
  journalDataAdapter.InsertCommand = new MySqlCommand("INSERT INTO journal (Id,date,defect,Id_sub,mark,Id_user,recd)" +
                                         "VALUES (@Id,@date,@defect,@Id_sub,@mark,@Id_user,@recd);", myConnection);
            journalDataAdapter.InsertCommand.Parameters.AddWithValue("@Id", dataGridView1.Rows[NewRows].Cells["Id"].Value);
            journalDataAdapter.InsertCommand.Parameters.AddWithValue("@date", dataGridView1.Rows[NewRows].Cells["date"].Value);
            journalDataAdapter.InsertCommand.Parameters.AddWithValue("@defect", txDefect);
            journalDataAdapter.InsertCommand.Parameters.AddWithValue("@Id_sub", cbSub);
            journalDataAdapter.InsertCommand.Parameters.AddWithValue("@mark", dataGridView1.Rows[NewRows].Cells["mark"].Value);
            journalDataAdapter.InsertCommand.Parameters.AddWithValue("@Id_user", dataGridView1.Rows[NewRows].Cells["Id_user"].Value);
            if (dataGridView1.Rows[NewRows].Cells["recd"].Value == System.DBNull.Value)
                journalDataAdapter.InsertCommand.Parameters.AddWithValue("@recd", false);
            else
                journalDataAdapter.InsertCommand.Parameters.AddWithValue("@recd", dataGridView1.Rows[NewRows].Cells["recd"].Value);
            journalDataAdapter.Update(myDataSet.Tables[0]);
            myDataSet.Tables[0].AcceptChanges();
0
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
25.04.2014, 19:22
После вот этой строки
C#
1
MySqlDataAdapter journalDataAdapter = new MySqlDataAdapter("select * from journal", myConnection);
добавляешь
C#
1
MySqlCommandBuilder journalCommandBuilder = new MySqlCommandBuilder(journalDataAdapter);
После чего отпадает необходимость в этом
C#
1
2
journalDataAdapter.InsertCommand = new MySqlCommand(...
journalDataAdapter.InsertCommand.Parameters.AddWithValue(...
Всё, что требутся - перенести данные, введённые через Form2, в соответствующие ячейки DataGridView и вызвать
C#
1
journalDataAdapter.Update(myDataSet.Tables[0]);
0
0 / 0 / 0
Регистрация: 13.03.2014
Сообщений: 21
28.04.2014, 02:30  [ТС]
выдает ошибку "Требуется инициализировать свойство DataAdapter.SelectCommand."

C#
1
2
3
4
 MySqlCommandBuilder journalCommandBuilder = new MySqlCommandBuilder(journalDataAdapter);
            dataGridView1.Rows[NewRows].Cells["defect"].Value = txDefect;
            dataGridView1.Rows[NewRows].Cells["Id_sub"].Value = cbSub;
            journalDataAdapter.Update(myDataSet.Tables[0]);
Что не правильно?
0
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
28.04.2014, 07:08
Connection, DataAdapter и DataSet должны быть объявлены в заголовке класса главной формы и создаваться 1 раз, например, в обработчике события Load формы. Там же CommandBuilder.
0
0 / 0 / 0
Регистрация: 13.03.2014
Сообщений: 21
28.04.2014, 07:10  [ТС]
Теперь новая ошибка "Для элемента Update требуется действительный InsertCommand при передаче коллекции DataRow с новыми строками."
0
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
28.04.2014, 17:19
Новый текст программы покажи.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
28.04.2014, 17:19
Помогаю со студенческими работами здесь

Пропадает изображение в richTextBox при добавлении в него новых данных
Добрый вечер. Идея проекта - чат со смайликами. Проблема в следующем: при добавлении изображения в richTextBox оно там появляется, но,...

[WPF] Не обновляется DataGrid при добавлении данных!
У меня есть Datagrid который берет строки из класса Patient Класс Patient хранит в себе полученные из сети по json строки. При...

Как обновить View Datagrid при добавлении данных из ViewModel MVVM
Вот код который берет данные из бд, через binding привязка к datagrid class AppViewModel : INotifyPropertyChanged { ...

Обновление данных при удалении записей в DataGrid
Приветствую! Ребята, подскажите где накосячил. Есть MVVM. На форме есть таблица DataGridView и несколько кнопок (удаление, добавление,...

Обновление данных при добавлении новых записей
Здравствуйте. Если открыть базу к примеру на двух компьютерах то: Еслм вносить изменение данных в таблице на первом компе, на втором компе...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru