Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.89/47: Рейтинг темы: голосов - 47, средняя оценка - 4.89
Лучше не лучше, но лучше.
 Аватар для BlacKCheT
16 / 14 / 3
Регистрация: 11.03.2018
Сообщений: 422

Вывод Datagrid значений в textbox другой формы

05.02.2019, 12:07. Показов 10290. Ответов 21

Студворк — интернет-сервис помощи студентам
Добрый день, задача такая:

Есть Datagrid на форме 2, при нажатии на кнопку на форме 2(изменить), открывается форма 4 на которой есть 8 textBox'ов..

В них нужно выводить значения из выделенного ряда(все 8 ячеек кроме id)

Вот моя наработка:

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
//FORM 2
 
 
public static string[] clients;
        private void button6_Click(object sender, EventArgs e)
         {
            for (int i = 1; i < dataGridView1.ColumnCount; i++)
                clients[i] = dataGridView1.Rows[dataGridView1.CurrentCell.RowIndex].Cells[i].Value.ToString();
 
            Form4 f = new Form4();
            f.Owner = this;
            f.Show();
         }
 
 
 
//FORM 4
 
private void Form4_Load(object sender, EventArgs e)
        {
 
            Form2 Form2 = this.Owner as Form2;
            textBox1.Text = Form2.clients[1];
            textBox2.Text = Form2.clients[2];
            textBox3.Text = Form2.clients[3];
            textBox4.Text = Form2.clients[4];
            textBox5.Text = Form2.clients[5];
            textBox6.Text = Form2.clients[6];
            textBox7.Text = Form2.clients[7];
            textBox8.Text = Form2.clients[8];
        }
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
05.02.2019, 12:07
Ответы с готовыми решениями:

Вывод данных из DataGridView в textBox другой формы
Добрый день. Как вывести данные из DataGridView в textBox другой формы? Пробовал в первой форме добавить обработчик нажатия на...

Добавление данных из textbox второй формы на Datagrid первой формы
Такой вопрос. У меня на первой форме есть DataGrid с подключенной БД. мне нужно, чтобы соответсвующие данные из texbox отразились в ...

Импортировать данные из таблицы ListView одной формы в таблицу DataGrid другой формы
Форумчане, помогите пожалуйста! С# изучаю недавно, поэтому многое не получается :-( Вопрос такой: можно ли реализовать следующее? и...

21
182 / 145 / 94
Регистрация: 30.07.2013
Сообщений: 579
05.02.2019, 12:52
BlacKCheT,

Данные, выводимые в DataGridView хранятся в статическом классе Data:
Кликните здесь для просмотра всего текста
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
using System.Collections.Generic;
using System.Linq;
 
namespace BlacKCheT
{
    class Data
    {
        public static List<SomeTypeClass> SomeTypeRepository = new List<SomeTypeClass>();
 
        public static IEnumerable<SomeTypeClass> GetSomeTypeItems()
        {
            return SomeTypeRepository;
        }
 
        public static void AddSomeTypeItem(SomeTypeClass item)
        {
            SomeTypeRepository.Add(item);
        }
 
        public static SomeTypeClass GetSomeTypeItem(int id)
        {
            return SomeTypeRepository.Where(x => x.ID == id).First();
        }
    }
}


Данные представлены классом SomeTypeClass:
Кликните здесь для просмотра всего текста
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
namespace BlacKCheT
{
    class SomeTypeClass
    {
        public int ID { get; set; }
        public string Value1 { get; set; }
        public string Value2 { get; set; }
        public string Value3 { get; set; }
        public string Value4 { get; set; }
        public string Value5 { get; set; }
        public string Value6 { get; set; }
        public string Value7 { get; set; }
        public string Value8 { get; set; }
    }
}


После инициализации компонентов Form2, добавляем пару записей для теста и привязываем данные к DataGridView:
Кликните здесь для просмотра всего текста
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
public Form2()
        {
            InitializeComponent();
            Data.AddSomeTypeItem(
                new SomeTypeClass()
                {
                    ID = 0,
                    Value1 = "one",
                    Value2 = "one",
                    Value3 = "one",
                    Value4 = "one",
                    Value5 = "one",
                    Value6 = "one",
                    Value7 = "one",
                    Value8 = "one"
                }
                );
            Data.AddSomeTypeItem(
                new SomeTypeClass()
                {
                    ID = 1,
                    Value1 = "two",
                    Value2 = "two",
                    Value3 = "two",
                    Value4 = "two",
                    Value5 = "two",
                    Value6 = "two",
                    Value7 = "two",
                    Value8 = "two"
                }
                );
            dataGridView1.DataSource = Data.GetSomeTypeItems();
        }


Также, в обработчике события Button.Click кнопки вызываем конструктор Form4, передавая ему аргументом индекс выделенной строки:
Кликните здесь для просмотра всего текста
C#
1
2
3
4
5
6
7
8
9
private void button6_Click(object sender, System.EventArgs e)
        {
            if (dataGridView1.SelectedRows.Count > 0)
            {
                Form4 form4 = new Form4(dataGridView1.SelectedRows[0].Index);
                form4.Show();
            }
            else MessageBox.Show("Please select a row!");
        }

! У DataGridView можно изменить значение свойств:
MultiSelect = false чтобы юзер мог выделить только одну строку
SelectionMode = DataGridViewSelectionMode.FullRowSelect чтобы выделялась вся строка целиком

Изменяем конструктор Form4, с тем, чтобы он принимал один аргумент типа int:
Кликните здесь для просмотра всего текста
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
public Form4(int id)
        {
            InitializeComponent();
            SomeTypeClass someTypeItem = Data.GetSomeTypeItem(id);
            textBox1.Text = someTypeItem.Value1;
            textBox2.Text = someTypeItem.Value2;
            textBox3.Text = someTypeItem.Value3;
            textBox4.Text = someTypeItem.Value4;
            textBox5.Text = someTypeItem.Value5;
            textBox6.Text = someTypeItem.Value6;
            textBox7.Text = someTypeItem.Value7;
            textBox8.Text = someTypeItem.Value8;
        }
0
Лучше не лучше, но лучше.
 Аватар для BlacKCheT
16 / 14 / 3
Регистрация: 11.03.2018
Сообщений: 422
05.02.2019, 16:03  [ТС]
В 4 форме не видит SomeTypeClass и Data.GetSomeTypeItem(id);
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
        public Form4(int id)
        {
            InitializeComponent();
            SomeTypeClass someTypeItem = Data.GetSomeTypeItem(id);
            textBox1.Text = someTypeItem.Value1;
            textBox2.Text = someTypeItem.Value2;
            textBox3.Text = someTypeItem.Value3;
            textBox4.Text = someTypeItem.Value4;
            textBox5.Text = someTypeItem.Value5;
            textBox6.Text = someTypeItem.Value6;
            textBox7.Text = someTypeItem.Value7;
            textBox8.Text = someTypeItem.Value8;
        }
 
 
        private void Form4_Load(object sender, EventArgs e)
        {
            Form2 Form2 = this.Owner as Form2;
            textBox1.Text = Form2.clients[1];
            textBox2.Text = Form2.clients[2];
            textBox3.Text = Form2.clients[3];
            textBox4.Text = Form2.clients[4];
            textBox5.Text = Form2.clients[5];
            textBox6.Text = Form2.clients[6];
            textBox7.Text = Form2.clients[7];
            textBox8.Text = Form2.clients[8];
        }
//FORM 2 с ней все ок

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
//ИЗМЕНЕНИЕ
 
        class Data
        {
            public static List<SomeTypeClass> SomeTypeRepository = new List<SomeTypeClass>();
 
            public static IEnumerable<SomeTypeClass> GetSomeTypeItems()
            {
                return SomeTypeRepository;
            }
 
            public static void AddSomeTypeItem(SomeTypeClass item)
            {
                SomeTypeRepository.Add(item);
            }
 
            public static SomeTypeClass GetSomeTypeItem(int id)
            {
                return SomeTypeRepository.Where(x => x.ID == id).First();
            }
        }
 
        class SomeTypeClass
        {
            public int ID { get; set; }
            public string Value1 { get; set; }
            public string Value2 { get; set; }
            public string Value3 { get; set; }
            public string Value4 { get; set; }
            public string Value5 { get; set; }
            public string Value6 { get; set; }
            public string Value7 { get; set; }
            public string Value8 { get; set; }
        }
 
        private void button6_Click(object sender, EventArgs e)
        {
            if (dataGridView1.SelectedRows.Count > 0)
            {
                Form4 form4 = new Form4(dataGridView1.SelectedRows[0].Index);
                form4.Show();
            }
            else MessageBox.Show("Please select a row!");
        }
0
182 / 145 / 94
Регистрация: 30.07.2013
Сообщений: 579
05.02.2019, 16:13
Лучший ответ Сообщение было отмечено BlacKCheT как решение

Решение

BlacKCheT,

Класс Data в отдельный файл CTRL+SHIFT+a -> Добавить класс -> вставить код внутри пространства имён
Класс SomeTypeClass в отдельный файл по той же схеме
1
Лучше не лучше, но лучше.
 Аватар для BlacKCheT
16 / 14 / 3
Регистрация: 11.03.2018
Сообщений: 422
05.02.2019, 16:17  [ТС]
И clients на Form4

C#
1
2
3
4
5
6
7
8
9
10
11
12
private void Form4_Load(object sender, EventArgs e)
        {
            Form2 Form2 = this.Owner as Form2;
            textBox1.Text = Form2.clients[1];
            textBox2.Text = Form2.clients[2];
            textBox3.Text = Form2.clients[3];
            textBox4.Text = Form2.clients[4];
            textBox5.Text = Form2.clients[5];
            textBox6.Text = Form2.clients[6];
            textBox7.Text = Form2.clients[7];
            textBox8.Text = Form2.clients[8];
        }
Серьезность Код Описание Проект Файл Строка Состояние подавления
Ошибка CS1061 "Form2" не содержит определения для "clients", и не удалось найти доступный метод расширения "clients", принимающий тип "Form2" в качестве первого аргумента (возможно, пропущена директива using или ссылка на сборку)
0
182 / 145 / 94
Регистрация: 30.07.2013
Сообщений: 579
05.02.2019, 16:55
BlacKCheT,

от события Load в Form4 Отписаться
0
Лучше не лучше, но лучше.
 Аватар для BlacKCheT
16 / 14 / 3
Регистрация: 11.03.2018
Сообщений: 422
05.02.2019, 17:05  [ТС]
А какое использовать?
Чтобы при открытии формы данные уже были в текстбоксах
0
182 / 145 / 94
Регистрация: 30.07.2013
Сообщений: 579
05.02.2019, 17:26
Цитата Сообщение от BlacKCheT Посмотреть сообщение
public Form4(int id)
* * * * {
* * * * * * InitializeComponent();
* * * * * * SomeTypeClass someTypeItem = Data.GetSomeTypeItem(id);
* * * * * * textBox1.Text = someTypeItem.Value1;
* * * * * * textBox2.Text = someTypeItem.Value2;
* * * * * * textBox3.Text = someTypeItem.Value3;
* * * * * * textBox4.Text = someTypeItem.Value4;
* * * * * * textBox5.Text = someTypeItem.Value5;
* * * * * * textBox6.Text = someTypeItem.Value6;
* * * * * * textBox7.Text = someTypeItem.Value7;
* * * * * * textBox8.Text = someTypeItem.Value8;
* * * * }
вот же, в конструкторе данные в текстбоксы заносятся
0
Лучше не лучше, но лучше.
 Аватар для BlacKCheT
16 / 14 / 3
Регистрация: 11.03.2018
Сообщений: 422
05.02.2019, 17:42  [ТС]
Удалил но System.InvalidOperationException: "Последовательность не содержит элементов"..

Добавлено через 1 минуту
Это при попытке изменить строку.. Забыл упомянуть, что у меня не все поля выделяются из БД... Все кроме ID, это не по этой причине ошибка?

Добавлено через 5 минут
т.е из таблицы все выделяется, включая ID, но кол-во текстбоксов меньше на 1 штуку..

Добавлено через 10 секунд
в 4й форме

Добавлено через 1 минуту
полей в ТБ - 9 а в форме4 текстбоксов - 8
0
182 / 145 / 94
Регистрация: 30.07.2013
Сообщений: 579
06.02.2019, 09:23
BlacKCheT,

Скорее всего Вы выделяете строку с индексом 2 и выше, так?
Что происходит при нажатии на кнопку button6: в конструктор Form4 передаётся индекс строки, допустим индекс равен 10.
Конструктор Form4 вызывает статический метод Data.GetSomeTypeItem(10), который должен вернуть элемент коллекции SomeTypeRepository, у которого значение свойства ID == 10.
Но для теста мы добавили в эту коллекцию только два элемента с ID == 0 и 1 соответственно (посмотрите код после InitializeComponent в конструкторе Form2)

Нужно при считывании данных из БД, на каждую итерацию DataReader.Read вместо добавления строки в DataGridView создавать и добавлять новый элемент класса SomeTypeClass в коллекцию SomeTypeRepository

После того как все данные считаны, показываете форму2, в конструкторе которой dataGridView1.DataSource = Data.GetSomeTypeItems();

Посмотрите в приложении весь проект чтобы посмотреть как это работает.
Вложения
Тип файла: zip BlacKCheTSolution.zip (450.2 Кб, 32 просмотров)
0
Лучше не лучше, но лучше.
 Аватар для BlacKCheT
16 / 14 / 3
Регистрация: 11.03.2018
Сообщений: 422
06.02.2019, 12:02  [ТС]
Вот так:
Миниатюры
Вывод Datagrid значений в textbox другой формы  
Изображения
 
0
Лучше не лучше, но лучше.
 Аватар для BlacKCheT
16 / 14 / 3
Регистрация: 11.03.2018
Сообщений: 422
06.02.2019, 12:34  [ТС]
Form4

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
        public Form4(int id)
        {
            InitializeComponent();
            SomeTypeClass someTypeItem = Data.GetSomeTypeItem(id);
            textBox1.Text = someTypeItem.surname;
            textBox2.Text = someTypeItem.name;
            textBox3.Text = someTypeItem.patronymic;
            textBox4.Text = someTypeItem.birthday;
            textBox5.Text = someTypeItem.address;
            textBox6.Text = someTypeItem.telephone;
            textBox7.Text = someTypeItem.bonus;
            textBox8.Text = someTypeItem.karma;
        }
Class Data, его часть

C#
1
2
3
4
        public static SomeTypeClass GetSomeTypeItem(int id)
        {
            return SomeTypeRepository.Where(x => x.ID == id).First();
        }
SomeTypeClass

C#
1
2
3
4
5
6
7
8
9
10
11
    {
        public int ID { get; set; }
        public string surname { get; set; }
        public string name { get; set; }
        public string patronymic { get; set; }
        public string birthday { get; set; }
        public string address { get; set; }
        public string telephone { get; set; }
        public string bonus { get; set; }
        public string karma { get; set; }
    }
Ошибка такая же System.InvalidOperationException: "Последовательность не содержит элементов"

На этой строке

C#
1
 return SomeTypeRepository.Where(x => x.ID == id).First();
Добавлено через 7 минут
К базе подключаюсь так:

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
        public string connStr = "server=127.0.0.1;user=root;password=;database=book_rental";
 
        //FROM(ONLOAD)
 
        private void Form2_Load(object sender, EventArgs e)
        {
            MySqlConnection coon = new MySqlConnection(connStr);
            MySqlCommand cmd = new MySqlCommand();
            cmd.Connection = coon;
            cmd.CommandText = "SELECT * FROM clients";
            MySqlDataAdapter adapter = new MySqlDataAdapter(cmd);
            DataSet dataset = new DataSet();
            adapter.Fill(dataset);
            bindingSorce.DataSource = dataset.Tables[0];
            dataGridView1.DataSource = bindingSorce;
            coon.Close();
        }
0
182 / 145 / 94
Регистрация: 30.07.2013
Сообщений: 579
07.02.2019, 11:59
BlacKCheT,

1. !!! В ФОРМЕ 2 ОТПИШИТЕСЬ ОТ СОБЫТИЯ Form2_Load !!!

2. Добавьте класс хелпер для работы с БД:
Кликните здесь для просмотра всего текста
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
using Devart.Data.MySql;
using System;
 
namespace BlacKCheT
{
    static class DBUtil
    {
 
        private static string conString = "server=127.0.0.1;user=root;password=;database=book_rental";
 
        public static void ReadClients()
        {
            using (MySqlConnection connection = new MySqlConnection(conString))
            {
                try
                {
                    connection.Open();
                    MySqlCommand command = new MySqlCommand();
                    command.Connection = connection;
                    command.CommandText = "SELECT * FROM blackchet";
                    MySqlDataReader reader = command.ExecuteReader();
                    while(reader.Read())
                    {
                        Data.AddSomeTypeItem(
                            new SomeTypeClass()
                            {
                                ID = reader.GetInt32(0),
                                surname = reader.GetString(1),
                                name = reader.GetString(2),
                                patronymic = reader.GetString(3),
                                birthday = reader.GetDateTime(4).ToString("dd.MM.yyyy"),
                                address = reader.GetString(5),
                                telephone = reader.GetString(6),
                                bonus = reader.GetFloat(7).ToString(),
                                karma = reader.GetString(8)
                            }
                            );
                    }
                    reader.Close();
                }
                catch(Exception ex)
                {
                    // error to log output
                }
            }
        }
    }
}


3. После инициализации компонентов формы 2 вызывайте метод ReadClients (данные из БД будут считаны в репозиторий) и затем указывайте источник данных для dataGridView1:
Кликните здесь для просмотра всего текста
C#
1
2
3
InitializeComponent();
            DBUtil.ReadClients();
            dataGridView1.DataSource = Data.GetSomeTypeItems();


4. В обработчике события button6.Click:
Кликните здесь для просмотра всего текста
C#
1
2
3
4
5
6
7
8
9
private void button6_Click(object sender, System.EventArgs e)
        {
            if (dataGridView1.SelectedRows.Count > 0)
            {
                Form4 form4 = new Form4(Convert.ToInt32(dataGridView1.SelectedRows[0].Cells[0].Value));
                form4.Show();
            }
            else MessageBox.Show("Please select a row!");
        }



0
Лучше не лучше, но лучше.
 Аватар для BlacKCheT
16 / 14 / 3
Регистрация: 11.03.2018
Сообщений: 422
07.02.2019, 17:13  [ТС]
Получилось! Теперь чтобы данные вставились нужно обновить DataGridView или Создать еще один класс измененного вида данного класса?

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
    static class DBUtil
    {
 
        private static string connStr = "server=127.0.0.1;user=root;password=;database=book_rental";
 
        public static void ReadClients()
        {
            using (MySqlConnection connection = new MySqlConnection(connStr))
            {
                try
                {
                    connection.Open();
                    MySqlCommand command = new MySqlCommand();
                    command.Connection = connection;
                    command.CommandText = "INSERT * INTO clients";
                    MySqlDataReader reader = command.ExecuteReader();
                    while (reader.Read())
                    {
                        Data.AddSomeTypeItem(
                            new SomeTypeClass()
                            {
                                ID = reader.GetInt32(0),
                                surname = reader.GetString(1),
                                name = reader.GetString(2),
                                patronymic = reader.GetString(3),
                                birthday = reader.GetDateTime(4).ToString("yyyy.MM.dd"),
                                address = reader.GetString(5),
                                telephone = reader.GetString(6),
                                bonus = reader.GetFloat(7).ToString(),
                                karma = reader.GetString(8)
                            }
                            );
                    }
                    reader.Close();
                }
                catch (Exception ex)
                {
                    // error to log output
                }
            }
        }
    }
Добавлено через 3 минуты
Или вот таким способом, только в for'e проходить по каждой ячейке и менять ее значение из TextBox?

C#
1
2
3
4
5
6
7
8
9
string select = dataGridView1[dataGridView1.CurrentCell.ColumnIndex, dataGridView1.CurrentCell.RowIndex].Value.ToString();
            MySqlConnection coon = new MySqlConnection(connStr);
            MySqlCommand cmd = new MySqlCommand();
            cmd.Connection = coon;
            cmd.CommandText = "INSTER INTO clients WHERE id=" + select + "";
            MySqlDataAdapter adapter = new MySqlDataAdapter(cmd);
            DataSet dataset = new DataSet();
            adapter.Fill(dataset);
            coon.Close();
Добавлено через 37 минут
C#
1
2
3
4
5
6
  if (dataGridView1.SelectedRows.Count > 0)
            {
                dataGridView1.SelectedRow[0].Cells[1].Value = textBox1.Text;
                
 
            }
Или вот так. Только как обратится к datagrid'y?

Добавлено через 20 минут
Это правильный вариант?

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
            MySqlConnection coon = new MySqlConnection(f2.connStr);  //строка подключения
            coon.Open();                                                                                //Открываем подключение
            MySqlCommand cmd = new MySqlCommand("Update Goods" +
            " Set surname=@tpSurname, tpComm=@tpComm Where id = id", coon);
            cmd.CommandType = CommandType.Text;      //Добавляем параметр типа int
            cmd.Parameters.AddWithValue("@tpSurname", textBox1.Text);
            cmd.Parameters.AddWithValue("@tpSurname", textBox1.Text);
            cmd.Parameters.AddWithValue("@tpSurname", textBox1.Text);
            cmd.Parameters.AddWithValue("@tpSurname", textBox1.Text);
            cmd.Parameters.AddWithValue("@tpSurname", textBox1.Text);
            cmd.Parameters.AddWithValue("@tpSurname", textBox1.Text);
            cmd.Parameters.AddWithValue("@tpSurname", textBox1.Text);
            cmd.Parameters.AddWithValue("@tpComm", int.Parse(textBox3.Text));
            try { cmd.ExecuteNonQuery(); } //Выполняем команду
            catch { MessageBox.Show("Облом!"); }
            finally
            {
                coon.Close();
            }
0
0 / 0 / 0
Регистрация: 13.04.2018
Сообщений: 20
08.02.2019, 08:03
для обновления данных я делаю так(в Form1):

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
private void toolStripButton2_Click(object sender, EventArgs e)//ОТКРЫТИЕ ФОРМЫ UPDATE ДЛЯ ОБНОВЛЕНИЯ ЗАПИСИ
        {
            if (dataGridView1.SelectedRows.Count > 0)
            {
                UPDATE update = new UPDATE(MySqlConnection, Convert.ToInt32(dataGridView1.SelectedRows[0].Cells[0].Value));
 
                update.Show();
            }
 
            else
            {
                MessageBox.Show("Выберете строку для редактирования!", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error);
 
            }
        }
В форму UPDATE передаем id той записи которую нужно изменить и выводим в текстбоксы данные из Mysql:

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
public partial class UPDATE : Form
    {
        private MySqlConnection MySqlConnection = null;
        private int id;
        public UPDATE(MySqlConnection connection, int id)
        {
            InitializeComponent();
 
            MySqlConnection = connection;
            this.id = id;
        }
 
        private async void UPDATE_Load(object sender, EventArgs e)
        {
            MySqlCommand getFirmsInfoCommand = new MySqlCommand("SELECT name_firm, director FROM firms WHERE Id=@Id", MySqlConnection);
            getFirmsInfoCommand.Parameters.AddWithValue("Id", id);
            System.Data.Common.DbDataReader sqlReader = null;
 
            try
            {
                sqlReader = await getFirmsInfoCommand.ExecuteReaderAsync();
 
                    while (await sqlReader.ReadAsync())
                    
                    {
                        textBox1.Text = Convert.ToString(sqlReader["name_firm"]);  // и так далее
                        textBox2.Text = Convert.ToString(sqlReader["director"]);
 
 
                    }
            }
 
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message, "Ошибка!", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
 
            finally
            {
                if (sqlReader != null && !sqlReader.IsClosed)
                    sqlReader.Close();
            }
        }
Обновление и запись UPDATE:

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
private async void button1_Click(object sender, EventArgs e)
        {
            MySqlCommand updateFirmsCommand = new MySqlCommand("UPDATE firms SET name_firm=@name_firm, director=@director WHERE Id=@Id", MySqlConnection);
 
            updateFirmsCommand.Parameters.AddWithValue("Id", id);
            updateFirmsCommand.Parameters.AddWithValue("name_firm", textBox1.Text); 
            
 
            try
            {
                await updateFirmsCommand.ExecuteNonQueryAsync();
                Close();
            }
 
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message, "Ошибка!", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }
 
        private void button2_Click(object sender, EventArgs e)
        {
            Close();
        }
Все работает как мне нужно)
0
Лучше не лучше, но лучше.
 Аватар для BlacKCheT
16 / 14 / 3
Регистрация: 11.03.2018
Сообщений: 422
08.02.2019, 18:40  [ТС]
Можно Zip архив?) у меня уже есть данные полученные из бд для изменения, нужно только запулить их..

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
if (dataGridView1.SelectedRows.Count > 0)
            {
                //Form2 f2 = new Form2(MySqlConnection, Convert.ToInt32(dataGridView1.SelectedRows[0].Cells[0].Value));
                textBox1.Text = dataGridView1.CurrentRow.Cells[1].Value.ToString();
                textBox2.Text = dataGridView1.CurrentRow.Cells[2].Value.ToString();
                textBox3.Text = dataGridView1.CurrentRow.Cells[3].Value.ToString();
                textBox4.Text = dataGridView1.CurrentRow.Cells[4].Value.ToString();
                textBox5.Text = dataGridView1.CurrentRow.Cells[5].Value.ToString();
                textBox6.Text = dataGridView1.CurrentRow.Cells[6].Value.ToString();
                textBox7.Text = dataGridView1.CurrentRow.Cells[7].Value.ToString();
                textBox8.Text = dataGridView1.CurrentRow.Cells[8].Value.ToString();
                update.Show();
            }
0
Лучше не лучше, но лучше.
 Аватар для BlacKCheT
16 / 14 / 3
Регистрация: 11.03.2018
Сообщений: 422
09.02.2019, 11:15  [ТС]
Почему не появляется поле в Гриде?

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
class SomeTypeClass
    {
        public int ID { get; set; }
        public string surname { get; set; }
        public string name { get; set; }
        public string patronymic { get; set; }
        public string birthday { get; set; }
        public string address { get; set; }
        public string telephone { get; set; }
        public string bonus { get; set; }
        public string karma { get; set; }
        public string img { get; set; }
    }
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
 Data.AddSomeTypeItem(
                            new SomeTypeClass()
                            {
                                ID = reader.GetInt32(0),
                                surname = reader.GetString(1),
                                name = reader.GetString(2),
                                patronymic = reader.GetString(3),
                                birthday = reader.GetDateTime(4).ToString("yyyy.MM.dd"),
                                address = reader.GetString(5),
                                telephone = reader.GetString(6),
                                bonus = reader.GetFloat(7).ToString(),
                                karma = reader.GetString(8),
                                img = reader.GetString(9)
                            }
                            );


Пытаюсь сделать вывод картинок из БД при листинге грида.. Но глобально не могу объявить fileName... К гриду нет доступа это все на одной форме.. Схема вывода из бд такая же..

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
 //ВПЕРЕД
 
        private void button9_Click(object sender, EventArgs e)
        {
            if (dataGridView1.RowCount -2 <= dataGridView1.CurrentCell.RowIndex)
            {
                button9.Visible = false;
            }
            else if (dataGridView1.RowCount - 2 >= dataGridView1.CurrentCell.RowIndex)
            {
                button9.Visible = true;
                dataGridView1.CurrentCell = dataGridView1.Rows[dataGridView1.CurrentCell.RowIndex + 1].Cells[dataGridView1.CurrentCell.ColumnIndex];
                //Картинка из директории
                string fileName = Environment.CurrentDirectory + @"\" + dataGridView1[9, dataGridView1.CurrentCell.RowIndex].Value.ToString();
                pictureBox1.Load(fileName);
            }
        }
Миниатюры
Вывод Datagrid значений в textbox другой формы  
0
Лучше не лучше, но лучше.
 Аватар для BlacKCheT
16 / 14 / 3
Регистрация: 11.03.2018
Сообщений: 422
09.02.2019, 12:32  [ТС]
C выводом img в datagrid вопрос решен
0
Лучше не лучше, но лучше.
 Аватар для BlacKCheT
16 / 14 / 3
Регистрация: 11.03.2018
Сообщений: 422
23.02.2019, 19:22  [ТС]
Не подскажите как я могу вытащить ID из List<T>?

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
public Form4(int id)
        {
            InitializeComponent();
            Clients Clients = Data.GetClients(id);
            textBox1.Text = Convert.ToString(Clients.ID); //Как вытащить в переменную? Нужно использовать в SQL запросе..
            textBox2.Text = Clients.surname;
            textBox3.Text = Clients.name;
            textBox4.Text = Clients.patronymic;
            textBox5.Text = Clients.birthday;
            textBox6.Text = Clients.address;
            textBox7.Text = Clients.telephone;
            textBox8.Text = Clients.bonus;
            textBox9.Text = Clients.karma;
            textBox10.Text = Clients.img;
        }
0
0 / 0 / 0
Регистрация: 08.10.2018
Сообщений: 19
26.03.2019, 15:04
Здравствуйте! Не могли бы вы показать исходник данного проекта? у меня похожая проблема, но по ходу записей не могу нормально сообразить что и куда.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
26.03.2019, 15:04
Помогаю со студенческими работами здесь

Передать ID с textBox одной формы на textBox другой
Добрый день! Не могу понять, подскажите пожалуйста, у меня есть форма. На форме есть textBox &quot;UserID&quot;. К этому полю textBox есть...

Динамическое изменение значений в TextBox или в DataGrid
Подскажите как сделать, чтобы например в TextBox или в DataGrid значение менялось динамически. Допусти int object; for(int i=0;i &lt;...

Запись в Combobox одной формы из поля Textbox другой формы в Excel
Здравствуйте, уважаемые специалисты! Решаю задачу и выходит проблема. Есть лист &quot;Должности&quot; со столбцами Код и Наименование и...

Передача данных с DataGridView одной формы в TextBox другой формы
Ребята, мне необходимо передать значения с выбранной строки Datagridview в textboxы второй формы, но есть одно но! Нужно чтобы доступ был...

Перенести данные из textBox одной формы в listBox другой формы
Помогите пожалуйста) Нужно из textBox одной формы перенести данные в listBox другой формы.


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
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
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru