Как назначить список <object>для dataGridView и получить один объект при выборе строки в c# и winForm? - PullRequest
0 голосов
/ 05 февраля 2020

У меня DGV (DataGridView) , я хочу установить список изображений , иметь свойство (ID, подпись, цена) , но показывать только в DGV Заголовок и изображение andm, когда выбранная строка в DGV получает один объект или получает идентификатор

Пример

Список изображений

var data = new List<Picture>()
{
     new Picture(){ ID = 1, Caption = "A", Price = 5},
     new Picture(){ ID = 2, Caption = "B", Price = 2},
     new Picture(){ ID = 3, Caption = "C", Price = 8},
     new Picture(){ ID = 4, Caption = "D", Price = 6}
};

DataGridView

Я хочу показать данные на DGV следующим образом:

Caption   Price
------    ------
A          5
B          2
C          8
D          6 

Я хочу, когда выбрать строка 1, найти идентификатор 1, строка 2 найти идентификатор 2 и т. д. ...

Использовать этот код

var data = new List<Picture>()
        {
            new Picture(){ ID = 1, Caption = "A", Price = 5},
            new Picture(){ ID = 2, Caption = "B", Price = 2},
            new Picture(){ ID = 3, Caption = "C", Price = 8},
            new Picture(){ ID = 4, Caption = "D", Price = 6}
        };

        dataGridView.DataSource = new BindingSource
        {
            DataSource = data
        };

1 Ответ

0 голосов
/ 06 февраля 2020

Моя проблема решена с помощью нового способа

  1. Использовать добавить идентификатор столбца, но Visible = false ID_Hidden
  2. Использовать dataGridView_CellClick Обработчик события для получения идентификатора

Назначение объекта в DGV

foreach (var item in PictureAPI.GET())
            dataGridView.Rows.Add(item.ID, item.Caption, item.Price);

Получение идентификатора

private void dataGridView_CellClick(object sender, DataGridViewCellEventArgs e)
    {
        // Get ID 
        int id = Convert.ToInt32(dataGridView.Rows[e.RowIndex].Cells[0].Value);

        // Find Object
        var obj = PictureAPI.GET().First(A => A.ID == id);
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...