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