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