Форум программистов, компьютерный форум, киберфорум
C# .NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.93/15: Рейтинг темы: голосов - 15, средняя оценка - 4.93
0 / 0 / 0
Регистрация: 27.11.2018
Сообщений: 68

Столбец с картинками в DataGridView

31.05.2019, 20:09. Показов 3269. Ответов 15
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Вывожу из MySQL Workbench таблицу в Visual Studio. Все прекрасно выводится кроме столбца, где находятся картинки. Подскажите, что изменить, чтобы вместо System.Bite[], в окошке высвечивались фотки. Все еще надеюсь, что кто-нибудь поправит мой код:3
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
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using MySql.Data.MySqlClient;
 
 
namespace tab
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            LoadData();
        }
 
        private void LoadData()
        {
            string connectString = "server=localhost; user=root; password=Qazplm123890; database=bti";
            MySqlConnection myConnection = new MySqlConnection(connectString);
            myConnection.Open();
 
            string query = "SELECT * FROM здание ORDER BY idЗдание";
            MySqlCommand command = new MySqlCommand(query, myConnection);
            MySqlDataReader reader = command.ExecuteReader();
            List<string[]> data = new List<string[]>();
            while (reader.Read())
            {
                data.Add(new string[13]);
                data[data.Count - 1][0] = reader[1].ToString();
                data[data.Count - 1][1] = reader[2].ToString();
                data[data.Count - 1][2] = reader[3].ToString();
                data[data.Count - 1][3] = reader[4].ToString();
                data[data.Count - 1][4] = reader[5].ToString();
                data[data.Count - 1][5] = reader[6].ToString();
                data[data.Count - 1][6] = reader[7].ToString();// тут фоточки:3
                data[data.Count - 1][7] = reader[8].ToString();
                data[data.Count - 1][8] = reader[9].ToString();
                data[data.Count - 1][9] = reader[10].ToString();
                data[data.Count - 1][10] = reader[11].ToString();
                data[data.Count - 1][11] = reader[12].ToString();
                data[data.Count - 1][12] = reader[13].ToString();
            }
            reader.Close();
 myConnection.Close();
 
            dataGridView1.Rows.Clear();
foreach (string[] s in data)
                dataGridView1.Rows.Add(s);
}}}
Миниатюры
Столбец с картинками в DataGridView  
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
31.05.2019, 20:09
Ответы с готовыми решениями:

Как в datagridview заменить столбец из одной таблицы на столбец из второй?
Существуют 2 таблицы:&quot;Storage&quot; и &quot;Managers&quot;. В таблице &quot;Managers&quot; указано &quot;Managers_ID&quot; и &quot;FIO&quot;. В таблице &quot;Storage&quot; тоже...

Ячейки DataGridView заполнить картинками
Хочу поле в таблице заполнить картинками. Пробую вот таким способ и что-то не особо получается. Помоги решить данный вопрос) for...

DataGridView с картинками тормозит форму
Здравствуйте, Есть форма с DataGridView с иконками, из за неё форма тормозит при перемещении проблема: при перемещении формы она ...

15
Эксперт .NET
6691 / 4102 / 1607
Регистрация: 09.05.2015
Сообщений: 9,574
31.05.2019, 20:26
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
            string connectString = "server=localhost; user=root; password=Qazplm123890; database=bti";
            MySqlConnection myConnection = new MySqlConnection(connectString);
            myConnection.Open();
 
            string query = "SELECT * FROM здание ORDER BY idЗдание";
            MySqlCommand command = new MySqlCommand(query, myConnection);
            MySqlDataReader reader = command.ExecuteReader();
            dataGridView1.Rows.Clear();
            while (reader.Read())
            {
                int index = dataGridView1.Rows.Add();
                DataGridViewRow row = dataGridView1.Rows[index];
                row.Cells[0].Value = reader.GetString(1);
                row.Cells[1].Value = reader.GetString(2);
                row.Cells[2].Value = reader.GetString(3);
                row.Cells[3].Value = reader.GetString(4);
                row.Cells[4].Value = reader.GetString(5);
                row.Cells[5].Value = reader.GetString(6);
                row.Cells[6].Value = new Bitmap(reader.GetStream(7));// тут фоточки:3
                row.Cells[7].Value = reader.GetString(8);
                row.Cells[8].Value = reader.GetString(9);
                row.Cells[9].Value = reader.GetString(10);
                row.Cells[10].Value = reader.GetString(11);
                row.Cells[11].Value = reader.GetString(12);
                row.Cells[12].Value = reader.GetString(13);
            }
            reader.Close();
            myConnection.Close();
0
0 / 0 / 0
Регистрация: 27.11.2018
Сообщений: 68
01.06.2019, 11:56  [ТС]
Выделаяет
C#
1
row.Cells[6].Value = new Bitmap(reader.GetStream(7));
И выдает исключение System.IndexOutOfRangeException: "Data index must be a valid index in the field"
Миниатюры
Столбец с картинками в DataGridView  
0
Эксперт .NET
6691 / 4102 / 1607
Регистрация: 09.05.2015
Сообщений: 9,574
01.06.2019, 14:00
У вас столбцы в DGV добавлены? Если нет, то добавьте. Так же проверьте что запрос возвращает корректные данные.
0
0 / 0 / 0
Регистрация: 27.11.2018
Сообщений: 68
01.06.2019, 14:09  [ТС]
Да, вот моя форма, все добавлено. Столбец фото заявлен типом DataGridViewImageColumn. Проблема именно в этой строчке.
C#
1
row.Cells[6].Value = new Bitmap(reader.GetStream(7));
Если ее закомментировать, то все нормально выводится(Без фото, конечно же).
Миниатюры
Столбец с картинками в DataGridView  
0
Эксперт .NET
6691 / 4102 / 1607
Регистрация: 09.05.2015
Сообщений: 9,574
01.06.2019, 14:36
Цитата Сообщение от Valentina1999 Посмотреть сообщение
Столбец фото заявлен типом DataGridViewImageColumn.
А в базе какой тип у столбца этого?
0
0 / 0 / 0
Регистрация: 27.11.2018
Сообщений: 68
01.06.2019, 14:38  [ТС]
LONGBLOB
Миниатюры
Столбец с картинками в DataGridView  
0
Эксперт .NET
6691 / 4102 / 1607
Регистрация: 09.05.2015
Сообщений: 9,574
01.06.2019, 14:53
А если так попробовать
C#
1
row.Cells[6].Value = new Bitmap(reader.GetFieldValue<Stream>(7));
0
0 / 0 / 0
Регистрация: 27.11.2018
Сообщений: 68
01.06.2019, 14:56  [ТС]
System.InvalidCastException: "Не удалось привести тип объекта "System.Byte[]" к типу "System.IO.Stream"."
Миниатюры
Столбец с картинками в DataGridView  
0
Эксперт .NET
6691 / 4102 / 1607
Регистрация: 09.05.2015
Сообщений: 9,574
01.06.2019, 14:59
Лучший ответ Сообщение было отмечено Valentina1999 как решение

Решение

А так
C#
1
row.Cells[6].Value = new Bitmap(new MemoryStream(reader.GetFieldValue<byte[]>(7)));
1
0 / 0 / 0
Регистрация: 27.11.2018
Сообщений: 68
01.06.2019, 17:06  [ТС]
ОГРОМНОЕ СПАСИБО!!!

Добавлено через 2 часа 5 минут
Есть еще такой вопрос. Мне нужно теперь забивать данные из приложения в dataGridView и в базу данных.
Загружаю все остальное так. Пользователь вводит все текстовые данные в текстобксы, а фото в пикчебокс. Это прописала, но не совсем понимаю, как на этапе загрузки в бд это записать. Пишу
C#
1
' " + pictureBox1.Image + " '
Так как он опять ссылается на эту строку
C#
1
row.Cells[6].Value = new Bitmap(new MemoryStream(reader.GetFieldValue<byte[]>(7)));
Воть мой код.
C#
1
2
string insert4 = "INSERT INTO здание (Кадастровый_номер, Площадь_земельного_участка, Год_постройки, Улица, Номер_дома, Износ_в_процентах, Фото) VALUES (' " + textBox1.Text.ToString() + " ', ' " + textBox2.Text.ToString() + " ', ' " + textBox3.Text.ToString() + " ', ' " + textBox4.Text.ToString() + " ', ' " + textBox5.Text.ToString() + " ',' " + textBox6.Text.ToString() + " ', ' " + pictureBox1.Image + " ')";
                    MySqlCommand comm4 = new MySqlCommand(insert4, myConnection2);
0
Эксперт .NET
6691 / 4102 / 1607
Регистрация: 09.05.2015
Сообщений: 9,574
01.06.2019, 17:30
Пробуйте так
C#
1
2
3
4
5
6
7
8
9
string insert4 = "INSERT INTO здание (Кадастровый_номер, Площадь_земельного_участка, Год_постройки, Улица, Номер_дома, Износ_в_процентах, Фото) VALUES (@param1, @param2, @param3, @param4, @param5, @param6, @param7)";
MySqlCommand comm4 = new MySqlCommand(insert4, myConnection2);
comm4.Parameters.AddWithValue("@param1", textBox1.Text);
comm4.Parameters.AddWithValue("@param2", textBox2.Text);
comm4.Parameters.AddWithValue("@param3", textBox3.Text);
comm4.Parameters.AddWithValue("@param4", textBox4.Text);
comm4.Parameters.AddWithValue("@param5", textBox5.Text);
comm4.Parameters.AddWithValue("@param6", textBox6.Text);
comm4.Parameters.AddWithValue("@param7", pictureBox1.Image);
Возможно нужно еще pictureBox1.Image преобразовать в byte[]... Если оно само не преобразует как надо...
0
0 / 0 / 0
Регистрация: 27.11.2018
Сообщений: 68
01.06.2019, 18:11  [ТС]
Да, пишет то же самое. Видимо, нужно преобразовывать.
0
Эксперт .NET
6691 / 4102 / 1607
Регистрация: 09.05.2015
Сообщений: 9,574
01.06.2019, 18:18
Лучший ответ Сообщение было отмечено Valentina1999 как решение

Решение

Преобразовать можно так...
C#
1
2
3
4
5
using (MemoryStream ms = new MemoryStream())
{
    pictureBox1.Image.Save(ms, ImageFormat.Png);
    comm4.Parameters.AddWithValue("@param7", ms.ToArray());
}
1
0 / 0 / 0
Регистрация: 27.11.2018
Сообщений: 68
01.06.2019, 18:25  [ТС]
Да, я это уже сделала. Еще раз спасибо вам за помощь!
0
-22 / 1 / 0
Регистрация: 04.03.2017
Сообщений: 234
17.06.2024, 12:53
Someone007, Здравствуйте!

Подскажите, как задать иконку в поле таблице, если соседнее поле имеет состояние true в GridView?

Например: Если поле = true то Иконка1, иначе Иконка2

Спасибо!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
17.06.2024, 12:53
Помогаю со студенческими работами здесь

DataGridView. Существует ли столбец?
Как мне узнать, существует ли столбец с заданным именем в DataGridView? Проверять в цикле не подойдет, т.к. столбцов очень много и...

Пользовательский столбец в DataGridView
Всем доброго времени суток. Суть задачи: нужно в столбце DataGridView организовать ComboBox с функцией живого поиска. По стд. в DGV есть...

Заморозить столбец в DataGridView
Подскажите,пожалуйста, что нужно сделать для того,чтобы во время сортировки по столбцу (номер 1,допустим) в DGV столбцы 2 и 3 менялись...

Окрасить столбец в datagridview
Доброго дня. Пытаюсь окрасить выбранный столбец, но он окрашивается только по четным. при этом если до этого была окрашена строка то...

DataGridView: CheckBox столбец
В DataGridView данные у меня считываются через DataSource = List&lt;MyClass&gt; с включенным AutoGenerateColumns, возможно ли при этом сделать...


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

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
Новые блоги и статьи
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru