Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.89/9: Рейтинг темы: голосов - 9, средняя оценка - 4.89
 Аватар для xamelione25
-4 / 5 / 2
Регистрация: 04.02.2013
Сообщений: 1,860

Не срабатывает функция добавления строки в datagridview при работе с update в mysql

13.08.2021, 01:16. Показов 1915. Ответов 11
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Имеется форма где в изначально-пустом виде можно внести данные и сохранить их в mysql щелкнув button1 --- то есть выходим в else (см.код строки 66-85 и 142).

В этой форме есть datagridview, где можно нажатием на button5 добавить в него строку (строка в коде 146).

Можно выбрать из БД данные через вторую форму (то есть я выбираю строку в datagridview во второй форме - нажимаю изменить - и у меня открывается первая форма с уже взятыми данными из БД). См.строки в коде 55-65 и 100-139

НО!!! У меня проблема возникает при попытке для начала добавить/или удалить хотя бы строку в datagridview - СТРОКИ ПРОСТО НЕ ДОБАВЛЯЮТСЯ в datagridview при нажатии на button5.

В чем ошибка в коде? подскажите пожалуйста).
Я может ошибаюсь ... но возможно мне нужно продублировать строки 146-150 в строке 138 -> но у меня не получается это сделать!

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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using MySql.Data.MySqlClient;
 
namespace IT_A_stroy
{
    public partial class Form2 : Form
    {
        DataSet ds;
        MySqlDataAdapter adapter;
        public string ID { get; set; }
        public bool IsEdit { get; set; }
        string sql = "select post, FIO from a_stroy.employee where 1=2";
        public DataTable Execute(string script)
        {
            using (MySqlConnection connection = new MySqlConnection(DBMySQLUtils.GetConnectionString()))
            {
                DataTable table = new DataTable();
                connection.Open();
                adapter = new MySqlDataAdapter(script, connection);
                adapter.Fill(table);
                return table;
            }
        }
        public Form2()
        {
            InitializeComponent();
            dataGridView1.SelectionMode = DataGridViewSelectionMode.FullRowSelect;
            dataGridView1.AllowUserToAddRows = false;
            using (MySqlConnection connection = new MySqlConnection(DBMySQLUtils.GetConnectionString()))
            {
                connection.Open();
                ds = new DataSet();
                adapter = new MySqlDataAdapter(sql, connection);
                adapter.Fill(ds);
                dataGridView1.DataSource = ds.Tables[0];
                dataGridView1.Columns["post"].Width = 97;
                dataGridView1.Columns["post"].HeaderText = "Должность";
                dataGridView1.Columns["FIO"].Width = 100;
                dataGridView1.Columns["FIO"].HeaderText = "ФИО";
            }
        }
        MySqlCommand mySqlCommand;
        
        private void Button1_Click(object sender, EventArgs e)
        {
            try
            {
                if (IsEdit)
                {
                    MySQL_connect.Execute2($@"UPDATE Organization SET Name_organization = '{textBox1.Text}', FCS_director = '{textBox2.Text}', INN = {textBox3.Text}, KPP = {textBox4.Text}, OGRN = {textBox5.Text}, OKATO = {textBox6.Text}, OKPO = {textBox7.Text}, Email = '{textBox8.Text}', Phone = {textBox9.Text}, Name_bank = '{textBox10.Text}', Schet_raschetniy = {textBox11.Text}, Schet_korr = {textBox12.Text}, BIK = {textBox13.Text}, UR_index = {textBox14.Text}, UR_region = '{textBox15.Text}', UR_city = '{textBox16.Text}', UR_street = '{textBox17.Text}', UR_house = '{textBox18.Text}', UR_stroenie = '{textBox19.Text}', UR_korpus = '{textBox20.Text}', UR_flat = '{textBox21.Text}', FAKT_index = {textBox22.Text}, FAKT_region = '{textBox23.Text}', FAKT_city = '{textBox24.Text}', FAKT_street = '{textBox25.Text}', FAKT_house = '{textBox26.Text}', FAKT_stroenie = '{textBox27.Text}', FAKT_korpus = '{textBox28.Text}', FAKT_flat  = '{textBox29.Text}' WHERE id_customer={ID}");
                    var cells = dataGridView1.CurrentRow.Cells;
                    var tabletemp = MySQL_connect.Execute($"SELECT id FROM a_stroy.employee WHERE id={ID} && C_O=1");
                    for (int i = 0; i < dataGridView1.RowCount; i++)
                    {
                        MySQL_connect.Execute2($"UPDATE employee SET post = '{dataGridView1.Rows[i].Cells[1].Value}', FIO = '{dataGridView1.Rows[i].Cells[2].Value}' where id={tabletemp} && C_O=1;");
                    }
                    MessageBox.Show("Введенные данные успешно изменены!", "Successful");
                }
                else
                {
                    string query = "INSERT INTO Organization (Name_organization, FCS_director, INN, KPP, OGRN, OKATO, OKPO, Email, Phone, Name_bank, Schet_raschetniy, Schet_korr, BIK, UR_index, UR_region, UR_city, UR_street, UR_house, UR_stroenie, UR_korpus, UR_flat, FAKT_index, FAKT_region, FAKT_city, FAKT_street, FAKT_house, FAKT_stroenie, FAKT_korpus, FAKT_flat) VALUES ('" + textBox1.Text + "','" + textBox2.Text + "','" + textBox3.Text + "','" + textBox4.Text + "','" + textBox5.Text + "','" + textBox6.Text + "','" + textBox7.Text + "','" + textBox8.Text + "','" + textBox9.Text + "','" + textBox10.Text + "','" + textBox11.Text + "','" + textBox12.Text + "','" + textBox13.Text + "','" + textBox14.Text + "','" + textBox15.Text + "','" + textBox16.Text + "','" + textBox17.Text + "','" + textBox18.Text + "','" + textBox19.Text + "','" + textBox20.Text + "','" + textBox21.Text + "','" + textBox22.Text + "','" + textBox23.Text + "','" + textBox24.Text + "','" + textBox25.Text + "','" + textBox26.Text + "','" + textBox27.Text + "','" + textBox28.Text + "','" + textBox29.Text + "')";
                    MySQL_connect.Execute2(query);
                    MySqlConnection connection = new MySqlConnection(DBMySQLUtils.GetConnectionString());// объект для установления соединения с БД
                    connection.Open();// открываем соединение
                    object lastid = ((MySQL_connect.Execute("SELECT id_organization FROM a_stroy.organization;").Rows as DataRowCollection).OfType<DataRow>().LastOrDefault()).ItemArray[0];
                    for (int i = 0; i < dataGridView1.RowCount; i++)
                    {
                        mySqlCommand = new MySqlCommand("sp_create_employee", connection);
                        mySqlCommand.CommandType = CommandType.StoredProcedure;
                        var cells = dataGridView1.Rows[i].Cells;
                        mySqlCommand.Parameters.Add(new MySqlParameter("@id", lastid));
                        mySqlCommand.Parameters.Add(new MySqlParameter("@post", cells[0].Value));
                        mySqlCommand.Parameters.Add(new MySqlParameter("@FIO", cells[1].Value));
                        mySqlCommand.Parameters.Add(new MySqlParameter("@C_O", 1));
                        mySqlCommand.ExecuteScalar();
                    }
                    MessageBox.Show("Введенные данные успешно сохранены!", "Successful");
                }
                Close();
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
                throw;
            }
        }
        private void Button2_Click(object sender, EventArgs e)
        {
            Close();
        }
        private void Form2_Load(object sender, EventArgs e)
        {
            if (IsEdit)
            {
                button1.Text = "Изменить";
                DataTable dt = MySQL_connect.Execute($"SELECT * FROM a_stroy.organization where id_organization={ID}");
                DataTable dt1 = MySQL_connect.Execute($"SELECT * FROM a_stroy.employee where id={ID} && C_O=1");
                textBox1.Text = dt.Rows[0].ItemArray[1].ToString();
                textBox2.Text = dt.Rows[0].ItemArray[2].ToString();
                textBox3.Text = dt.Rows[0].ItemArray[3].ToString();
                textBox4.Text = dt.Rows[0].ItemArray[4].ToString();
                textBox5.Text = dt.Rows[0].ItemArray[5].ToString();
                textBox6.Text = dt.Rows[0].ItemArray[6].ToString();
                textBox7.Text = dt.Rows[0].ItemArray[7].ToString();
                textBox8.Text = dt.Rows[0].ItemArray[8].ToString();
                textBox9.Text = dt.Rows[0].ItemArray[9].ToString();
                textBox10.Text = dt.Rows[0].ItemArray[10].ToString();
                textBox11.Text = dt.Rows[0].ItemArray[11].ToString();
                textBox12.Text = dt.Rows[0].ItemArray[12].ToString();
                textBox13.Text = dt.Rows[0].ItemArray[13].ToString();
                textBox14.Text = dt.Rows[0].ItemArray[14].ToString();
                textBox15.Text = dt.Rows[0].ItemArray[15].ToString();
                textBox16.Text = dt.Rows[0].ItemArray[16].ToString();
                textBox17.Text = dt.Rows[0].ItemArray[17].ToString();
                textBox18.Text = dt.Rows[0].ItemArray[18].ToString();
                textBox19.Text = dt.Rows[0].ItemArray[19].ToString();
                textBox20.Text = dt.Rows[0].ItemArray[20].ToString();
                textBox21.Text = dt.Rows[0].ItemArray[21].ToString();
                textBox22.Text = dt.Rows[0].ItemArray[22].ToString();
                textBox23.Text = dt.Rows[0].ItemArray[23].ToString();
                textBox24.Text = dt.Rows[0].ItemArray[24].ToString();
                textBox25.Text = dt.Rows[0].ItemArray[25].ToString();
                textBox26.Text = dt.Rows[0].ItemArray[26].ToString();
                textBox27.Text = dt.Rows[0].ItemArray[27].ToString();
                textBox28.Text = dt.Rows[0].ItemArray[28].ToString();
                textBox29.Text = dt.Rows[0].ItemArray[29].ToString();
                dataGridView1.DataSource = dt1;
                dataGridView1.Columns["C_O"].Visible = false;
                dataGridView1.Columns["id"].Visible = false;
                dataGridView1.Columns["id_employee"].Visible = false;
 
            }
            else
            {
                button1.Text = "Сохранить";
            }
        }
 
        private void button5_Click(object sender, EventArgs e)
        {
            DataRow row = ds.Tables[0].NewRow(); // добавляем новую строку в DataTable
            ds.Tables[0].Rows.Add(row);
        }
        private void button6_Click(object sender, EventArgs e)
        {
            if (MessageBox.Show("Удалить эту строку?", "Удаление", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
            {
                foreach (DataGridViewRow row in dataGridView1.SelectedRows)// удаляем выделенные строки из dataGridView1
                {
                    dataGridView1.Rows.Remove(row);
                }
            }
        }
    }
}
Миниатюры
Не срабатывает функция добавления строки в datagridview при работе с update в mysql  
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
13.08.2021, 01:16
Ответы с готовыми решениями:

Не срабатывает функция добавления записи в БД
Вот пример кода, убрал ненужные куски кода, дабы суть именно в тех фрагментах, что я привожу внизу, мне просто интересно почему это не...

Сделать так, чтобы при добавлении строки в DataGridView она добавлялась и в БД MySQL
Здравствуйте. У меня есть БД MySQL подключенная и выводиться на форму через dataGridView. Можно ли как нибудь сделать, что бы при...

Update trigger срабатывает при insert
Есть триггер, который должен срабатывать при изменение данных в таблице. Но он срабатывает не только при апдейте, но и при вставке данных....

11
68 / 56 / 15
Регистрация: 30.01.2020
Сообщений: 332
13.08.2021, 11:47
Цитата Сообщение от xamelione25 Посмотреть сообщение
СТРОКИ ПРОСТО НЕ ДОБАВЛЯЮТСЯ в datagridview при нажатии на button5
Вы добавляете строку в DataSet, DGV сам не обновляется

Добавлено через 17 минут
Попробуйте добавить
C#
1
2
dataGridView1.DataSource = ds.Tables[0];
datagridview1.Refresh();
0
 Аватар для xamelione25
-4 / 5 / 2
Регистрация: 04.02.2013
Сообщений: 1,860
13.08.2021, 21:52  [ТС]
gegbot, Если я добавляю эти две строки указанные вами, то у меня DGV просто обновляется (насколько я понял) и при нажатии на "изменить" у меня DGV - пустой, строк в нем нет, которые должны были бы взяться из БД. То есть у меня DGV находится в состоянии добавления новых данных .
Миниатюры
Не срабатывает функция добавления строки в datagridview при работе с update в mysql  
0
549 / 480 / 315
Регистрация: 24.09.2013
Сообщений: 3,345
Записей в блоге: 1
13.08.2021, 22:12
xamelione25, Обычно делаю так:

dataGridView1.RowCount = 7 (Нужное число строк)
0
 Аватар для xamelione25
-4 / 5 / 2
Регистрация: 04.02.2013
Сообщений: 1,860
13.08.2021, 22:22  [ТС]
zna926, но у меня ж ведь каждый раз количество сотрудников в организациях может же ведь меняться..... Поэтому вот так
0
Эксперт JavaЭксперт по электроникеЭксперт .NET
 Аватар для wizard41
3438 / 2758 / 575
Регистрация: 04.09.2018
Сообщений: 8,659
Записей в блоге: 3
14.08.2021, 10:15
xamelione25,
проверьте, что возвращают запросы в 103 и 104 строке. возможно они пустые и потому ДГВ пустой.
Если используете источник ДГВ, то зачем самостоятельно изменяете его содержимое:
Цитата Сообщение от xamelione25 Посмотреть сообщение
C#
1
dataGridView1.Rows.Remove(row);
Изменять надо DataSet и затем обновлять дгв, как вам ранее сказали.
0
 Аватар для xamelione25
-4 / 5 / 2
Регистрация: 04.02.2013
Сообщений: 1,860
14.08.2021, 10:27  [ТС]
wizard41,
Цитата Сообщение от wizard41 Посмотреть сообщение
Изменять надо DataSet и затем обновлять дгв, как вам ранее сказали.
а как это сделать...в этом то и вопрос
...то как gegbot мне это показал в коде....я получаю в итоге вообще пустой дгв ... непонятно почему он пустой!!!
0
 Аватар для xamelione25
-4 / 5 / 2
Регистрация: 04.02.2013
Сообщений: 1,860
14.08.2021, 10:27  [ТС]
wizard41,
Цитата Сообщение от wizard41 Посмотреть сообщение
Изменять надо DataSet и затем обновлять дгв, как вам ранее сказали.
а как это сделать...в этом то и вопрос
...то как gegbot мне это показал в коде....я получаю в итоге вообще пустой дгв ... непонятно почему он пустой!!!
0
Эксперт JavaЭксперт по электроникеЭксперт .NET
 Аватар для wizard41
3438 / 2758 / 575
Регистрация: 04.09.2018
Сообщений: 8,659
Записей в блоге: 3
14.08.2021, 10:36
Цитата Сообщение от xamelione25 Посмотреть сообщение
...то как gegbot мне это показал в коде....я получаю в итоге вообще пустой дгв ... непонятно почему он пустой!!!
а куда вы засунули то, что вам показал gegbot ?
0
 Аватар для xamelione25
-4 / 5 / 2
Регистрация: 04.02.2013
Сообщений: 1,860
14.08.2021, 11:01  [ТС]
wizard41, в 138 строку 1го поста
0
Эксперт JavaЭксперт по электроникеЭксперт .NET
 Аватар для wizard41
3438 / 2758 / 575
Регистрация: 04.09.2018
Сообщений: 8,659
Записей в блоге: 3
14.08.2021, 11:21
xamelione25,
Вот небольшой пример накидал:
Кликните здесь для просмотра всего текста
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
31
32
33
34
35
36
public partial class Form1 : Form
    {
        DataSet ds = new DataSet();
        DataTable dt = new DataTable();
 
        public Form1()
        {
            InitializeComponent();
            
            ds.Tables.Add( dt );
 
            DataColumn coll = new DataColumn( "Col1" );
            dt.Columns.Add( coll );
            coll = new DataColumn( "Col2" );
            dt.Columns.Add( coll );
            coll = new DataColumn( "Col3" );
            dt.Columns.Add( coll );
            coll = new DataColumn( "Col4" );
            dt.Columns.Add( coll );
 
 
            dataGridView1.DataSource = ds.Tables[0];
        }
 
        private void button2_Click( object sender, EventArgs e )
        {
            DataRow row = dt.NewRow();
            row.ItemArray = new object[] { "rc1", "rc2", "rc3", "rc4" };
            dt.Rows.Add( row );
        }
 
        private void button1_Click( object sender, EventArgs e )
        {
            dt.Rows.RemoveAt( dataGridView1.CurrentRow.Index );
        }
    }

DataGridView ввобще не трогаю. Все действия происходят только с dataTable.

Один единственный раз объявлено:
C#
1
dataGridView1.DataSource = ds.Tables[0];
Делайте по аналогии.
0
Эксперт JavaЭксперт по электроникеЭксперт .NET
 Аватар для wizard41
3438 / 2758 / 575
Регистрация: 04.09.2018
Сообщений: 8,659
Записей в блоге: 3
14.08.2021, 11:57
И все же проверьте что возвращают sql запросы.

Добавлено через 34 минуты
Цитата Сообщение от xamelione25 Посмотреть сообщение
C#
1
2
DataTable dt = MySQL_connect.Execute($"SELECT * FROM a_stroy.organization where id_organization={ID}");
DataTable dt1 = MySQL_connect.Execute($"SELECT * FROM a_stroy.employee where id={ID} && C_O=1");
Что-то я не уверен насчет этого. Странный метод заполнения таблиц.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
14.08.2021, 11:57
Помогаю со студенческими работами здесь

Перестала работать функция добавления новой записи в mysql
Добрый вечер, не могу понять в чём причина, вроде всё верно, хотя когда что-то менял, может случайно затронул часть кода, но ошибку не...

Событие добавления новой строки в DataGridView
Здравствуйте, не подскажите в datagrid заношу данные вручную, а как чтобы при добавлении новой строки в ячейки уже было значение(чтобы...

Не срабатывает таймер при работе с AJAX
Подскажите, что не так-то? &lt;%@ Page Language=&quot;vb&quot; AutoEventWireup=&quot;false&quot; CodeBehind=&quot;Default.aspx.vb&quot;...

DataGridView выделение строки не срабатывает с первого раза
Здравствуйте! Проблема такая: нужно выделить текущую ячейку. Private Sub DataGridView2_CellMouseClick(ByVal sender As Object, ByVal...

Часть хинтов не срабатывает при работе через девелопер
Почему-то часть хинтов не срабатывает при работе через девелопер (подозреваю что виновато то что он работает через jdbc, хотя может и сам...


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

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Новые блоги и статьи
Программный контроль заполнения реквизита табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать контроль заполнения реквизита табличной части. . .
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение: DISM / Online / Add-Capability / CapabilityName:WMIC~~~~ Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
Программная установка даты и запрет ее изменения
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: при создании документов установить период списания автоматически. . .
Вывод данных в справочнике через динамический список
Maks 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2. Задача: вывести данные из ТЧ нетипового документа. . .
Функция заполнения текстового поля в реквизите формы документа
Maks 01.04.2026
Алгоритм из решения ниже реализован на нетиповом документе "ВыдачаОборудованияНаСпецтехнику" разработанного в конфигурации КА2, в дополнении к предыдущему решению. На форме документа создается. . .
К слову об оптимизации
kumehtar 01.04.2026
Вспоминаю начало 2000-х, университет, когда я писал на Delphi. Тогда среди программистов на форумах активно обсуждали аккуратную работу с памятью: нужно было следить за переменными, вовремя. . .
Идея фильтра интернета (сервер = слой+фильтр).
Hrethgir 31.03.2026
Суть идеи заключается в том, чтобы запустить свой сервер, о чём я если честно мечтал давно и давно приобрёл книгу как это сделать. Но не было причин его запускать. Очумелые учёные напечатали на. . .
Модель здравосоХранения 6. ESG-повестка и устойчивое развитие; углублённый анализ кадрового бренда
anaschu 31.03.2026
В прикрепленном документе раздумья о том, как можно поменять модель в будущем
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru