Как заменить значения в строках DataGridView из автоматически сгенерированных на свои?

Кому не сложно, подскажите такой момент: есть DataGridView, столбцы которого создаются в коде.

dataGridView1.Columns.AddRange(
        new DataGridViewTextBoxColumn() { Name = "clmID", HeaderText = "ID", DataPropertyName = "ID" },
        new DataGridViewTextBoxColumn() { Name = "clmShortValue", HeaderText = "КЗ", DataPropertyName = "Short_Value" },
        new DataGridViewTextBoxColumn() { Name = "clmLongValue", HeaderText = "ДЗ", DataPropertyName = "Long_Value" },
        new DataGridViewTextBoxColumn() { Name = "clmStudent", HeaderText = "Студент", DataPropertyName = "Student_ID" },
        new DataGridViewTextBoxColumn() { Name = "clmDiscipline", HeaderText = "Дисципліна", DataPropertyName = "Discipline_ID" },
        new DataGridViewTextBoxColumn() { Name = "clmType", HeaderText = "Тип", DataPropertyName = "Type" },
        new DataGridViewTextBoxColumn() { Name = "clmDate", HeaderText = "Дата", DataPropertyName = "Date"},
        new DataGridViewTextBoxColumn() { Name = "clmTeacher", HeaderText = "Викладач", DataPropertyName = "Teacher_ID" }
        );

Сама таблица заполняется с помощью готового списка:

    List<BLL.DTOs.MarkDTO> temp = marksService.GetMarksByTeacher(teacher).OrderByDescending(x => x.Date).ToList();
    dataGridView1.DataSource = temp;

Код GetMarksByTeacher:

        public List<MarkDTO> GetMarksByTeacher(string teacher_id) 
    {
        List<MarkDTO> res = GetAll().FindAll(x => x.Teacher_ID.Equals(teacher_id)).ToList();
        return res;
    }

Код GetAll():

public List<MarkDTO> GetAll() 
    {
        var info = marksRepo.GetAll();
        var mapper = new MapperConfiguration(cfg =>
        cfg.CreateMap<Mark, MarkDTO>()).CreateMapper();

        return mapper.Map<List<Mark>,
            List<MarkDTO>>(info);
    }

Код GetAll в репозитории (marksRepo). Знаю, что длинновато, но работает:

try
        {
            FirebaseResponse response = client.Get(TABLE_NAME);
            List<Mark> res = new List<Mark>();

            Dictionary<string, Mark> data =
                JsonConvert.DeserializeObject
                <Dictionary<string, Mark>>(response.Body.ToString());

            if (data != null)
            {
                foreach (var value in data.Values)
                {
                    res.Add(value);
                }
            }

            return res;
        }
        catch (Exception ex)
        {
            return null;
        }

Работает все быстро, тут жаловаться не на что. Но вот нюанс - естественно, что при таком заполнении строки записываются буквально с объектов из списка.

Текущее состояние таблицы

Очень хотелось бы заменить длиннющие ID на более приятные глазу ФИО и тому подобное. Соответствующие методы и так есть, но вот как их применить, что бы не сильно замедлить отрисовку таблицы (а сейчас она работает ну очень быстро, и хотелось бы, что бы так и оставалось) - именно в этом и состоит мой вопрос. Раньше я использовала заполнение в цикле в комбинации с вышеупомянутыми методами, и отображалось все корректно, но медленно.


Ответы (0 шт):