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

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

25.04.2014, 04:39. Показов 4741. Ответов 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
Ответ Создать тему
Новые блоги и статьи
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка. Рецензия / Мнение Это мой обзор планшета X220 с точки зрения школьника. Недавно я решила попытаться уменьшить свой. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru