доп. комменты

This commit is contained in:
ujijrujijr 2024-05-17 13:35:29 +04:00
parent aaec7a7b61
commit 931851edd4

View File

@ -15,35 +15,43 @@ namespace GarmentFactoryView
{ {
return; return;
} }
//источник данных для таблицы - переданный список (считанный из storage)
grid.DataSource = data; grid.DataSource = data;
//просмотр свойств переданного класса
var type = typeof(T); var type = typeof(T);
var properties = type.GetProperties(); var properties = type.GetProperties();
//для каждого столбца
foreach (DataGridViewColumn column in grid.Columns) foreach (DataGridViewColumn column in grid.Columns)
{ {
//поиск свойства переданного класса, кот. отображается в этом столбце
var property = properties.FirstOrDefault(x => x.Name == column.Name); var property = properties.FirstOrDefault(x => x.Name == column.Name);
if (property == null) if (property == null)
{ {
throw new InvalidOperationException($"В типе {type.Name} не найдено свойство с именем { column.Name }"); throw new InvalidOperationException($"В типе {type.Name} не найдено свойство с именем { column.Name }");
} }
//поиск атрибута ColumnAtribute для этого свойства
var attribute = property.GetCustomAttributes(typeof(ColumnAttribute), true)?.SingleOrDefault(); var attribute = property.GetCustomAttributes(typeof(ColumnAttribute), true)?.SingleOrDefault();
if (attribute == null) if (attribute == null)
{ {
throw new InvalidOperationException($"Не найден атрибут типа ColumnAttribute для свойства { property.Name }"); throw new InvalidOperationException($"Не найден атрибут типа ColumnAttribute для свойства { property.Name }");
} }
// ищем нужный нам атрибут //установка для столбца атрибута, кот. был задан для свойства в этом столбце
if (attribute is ColumnAttribute columnAttr) if (attribute is ColumnAttribute columnAttr)
{ {
//настройка заголовка (первой строчки) столбца
column.HeaderText = columnAttr.Title; column.HeaderText = columnAttr.Title;
column.Visible = columnAttr.Visible; column.Visible = columnAttr.Visible;
//если было указано, что нужен автоматический размер, установка свойства
if (columnAttr.IsUseAutoSize) if (columnAttr.IsUseAutoSize)
{ {
column.AutoSizeMode = column.AutoSizeMode =
(DataGridViewAutoSizeColumnMode)Enum.Parse(typeof(DataGridViewAutoSizeColumnMode), columnAttr.GridViewAutoSize.ToString()); (DataGridViewAutoSizeColumnMode)Enum.Parse(typeof(DataGridViewAutoSizeColumnMode), columnAttr.GridViewAutoSize.ToString());
} }
//если не было указано, то задание установленной статичной ширины
else else
{ {
column.Width = columnAttr.Width; column.Width = columnAttr.Width;