Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.88/8: Рейтинг темы: голосов - 8, средняя оценка - 4.88
124 / 124 / 17
Регистрация: 30.06.2010
Сообщений: 478
1

Вывод изображения из BindingSource в DataGridView

04.08.2018, 18:52. Показов 1584. Ответов 4

Author24 — интернет-сервис помощи студентам
Имеется BindingSource с таблицей.
У таблицы такие поля:
- Id (int)
- Name (string)
- ImagePath (string)

В ImagePath лежит путь до JPG картинки.

C#
1
2
3
4
5
6
7
8
9
_bindingSource.DataSource = GetItems();
 
dgView.AutoGenerateColumns = false;
 
dgView.Columns[0].DataPropertyName = "id";
dgView.Columns[1].DataPropertyName = "name";
dgView.Columns[2].DataPropertyName = "imagePath";
 
dgView.DataSource = _bindingSource;
У dgView.Columns[2] тип DataGridViewImageColumn.

Как сделать так, чтобы картинка, которая хранится по указанному пути отобразилась в ячейке imagePath
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
04.08.2018, 18:52
Ответы с готовыми решениями:

BindingSource. dataGridView. Как сделать независимый фильтр для двух dataGridView?
Из Access данные импортируются в dataGridView В качестве источника данных используется один и тот...

BindingSource и DataGridView
Есть небольшой класс описывающий человека со свойствами Name, Age. В конструкторе формы сделал...

Вставка в dataGridView-bindingSource
Добрый день. Пытаюсь вставить из массива string в bindingsource, чтобы вставленный текст...

Работа с DataGridView и BindingSource
Здравствуйте. Я связал DataGridView и BindingSource. А теперь не знаю как работать. ...

4
1471 / 928 / 452
Регистрация: 06.02.2012
Сообщений: 2,846
04.08.2018, 19:23 2
Замени на
C#
1
dgView.DataSource = _bindingSource.DataSource;
И это лишнее.
C#
1
2
3
dgView.Columns[0].DataPropertyName = "id";
dgView.Columns[1].DataPropertyName = "name";
dgView.Columns[2].DataPropertyName = "imagePath";
0
124 / 124 / 17
Регистрация: 30.06.2010
Сообщений: 478
05.08.2018, 09:10  [ТС] 3
Kazbek17, это уже просто куски экспериментов остались.

Добавлено через 3 часа 4 минуты
Kazbek17, все равно не работает.
Добавлено через 9 часов 57 минут
Разобрался вроде.
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
DataTable tableItems = new DataTable("Items");
 
var column = new DataColumn
{
    DataType = typeof(Int32),
    ColumnName = "id",
    Caption = "Id"
};
tableItems.Columns.Add(column);
 
column = new DataColumn
{
    DataType = typeof(String),
    ColumnName = "name",
    Caption = "Name"
};
tableItems.Columns.Add(column);
 
column = new DataColumn
{
    DataType = typeof(Image),
    ColumnName = "image",
    Caption = "Image"
};
tableItems.Columns.Add(column);
 
var row = tableItems.NewRow();
row["id"] = 1;
row["name"] = "Item 1";
row["image"] = Image.FromFile(@"C:\image.jpg");
 
tableItems.Rows.Add(row);
 
dgView.AutoGenerateColumns = false;
dgView.RowTemplate.Height = 100;
 
var dgvTextBoxColumn = new DataGridViewTextBoxColumn
{
    DataPropertyName = "id",
    HeaderText = "Id",
};
dgView.Columns.Add(dgvTextBoxColumn);
 
dgvTextBoxColumn = new DataGridViewTextBoxColumn
{
    DataPropertyName = "name",
    HeaderText = "Name",
};
dgView.Columns.Add(dgvTextBoxColumn);
 
var dgvImageColumn = new DataGridViewImageColumn
{
    DataPropertyName = "image",
    HeaderText = "image",
    ImageLayout = DataGridViewImageCellLayout.Zoom
};
dgView.Columns.Add(dgvImageColumn);
 
dgView.DataSource = tableItems;
Добавлено через 5 минут
Но вопрос с тем, как это сделать с bindingSource остается открытым.

Добавлено через 22 минуты
Пока нашел такой вариант, чтобы отдавать в BindingSource созданный руками DataTable, а не заполненный через dataAdapter.Fill(DataTable).
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
internal DataTable GetItems()
{
    try
    {
        string queryString = "SELECT id, name, image FROM items";
        command = new MySqlCommand(queryString, Connection);
 
        dataTable = new DataTable("Items");
 
        var column = new DataColumn
        {
            DataType = typeof(Int32),
            ColumnName = "id",
            Caption = "Id"
        };
        dataTable.Columns.Add(column);
 
        column = new DataColumn
        {
            DataType = typeof(String),
            ColumnName = "name",
            Caption = "Name"
        };
        dataTable.Columns.Add(column);  
 
        column = new DataColumn
        {
            DataType = typeof(Image),
            ColumnName = "image",
            Caption = "Image"
        };
        dataTable.Columns.Add(column);
 
        Connection.Open();
 
        using (dataReader = command.ExecuteReader())
        {
            while (dataReader.Read())
            {               
                string pathToImage = dataReader["image"].ToString();
                Image image = pathToImage != "" ? Image.FromFile(pathToImage) : null;
                dataTable.Rows.Add(
                    dataReader["id"], 
                    dataReader["name"],                     
                    image);
            }
        }
 
        Connection.Close();
    }
    catch (Exception ex)
    {
        MessageBox.Show(ex.Message);
        Connection.Close();
    }
    return dataTable;
}
0
1471 / 928 / 452
Регистрация: 06.02.2012
Сообщений: 2,846
09.08.2018, 21:31 4
Цитата Сообщение от BigOblom Посмотреть сообщение
Пока нашел такой вариант, чтобы отдавать в BindingSource
Укажи источник, все, больше нечего не нужно. А сам бинд передай в dgv.DataSource = bind.DataSource.
Только я понять не могу зачем тебе бинд?
0
124 / 124 / 17
Регистрация: 30.06.2010
Сообщений: 478
15.08.2018, 14:44  [ТС] 5
Kazbek17, не работает, если просто указать источник.
Бинд нужен для сортировки, фильтрации по значениям из контролов.
0
15.08.2018, 14:44
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
15.08.2018, 14:44
Помогаю со студенческими работами здесь

BindingSource dataGridView не обновляется
Добрый день! Разбираюсь с BindingSource. Возник вопрос. вот у меня есть какой то простейший...

Использование BindingSource с DataGridView
Почему высвечивается ошибка связанная с list, если сделано всё по пунктам?Как исправить.Спасибо

Добавление в bindingsource не обновляет datagridview
Всем привет. У меня такой достаточно сложный вопрос. ...

DataGridView, DataSet, TableAdapter, BindingSource
Привет всем. Есть вопросик. У меня есть таблица .dbf, которую я вывожу в DataGridView. Гружу...

Поиск по datagridview, а не через BindingSource
Привет всем... не получается организовать поиск по datagridview. Нужно организовать поиск именно по...

Навигация по DataGridView без BindingSource
Всем здравствуйте! Я ищу компонент для навигации по DataGridView наподобие BindingNavigator,...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru