Это мой код для моего UserDynamicSetsControl:
public ReportData ReportData
{
get { return reportData; }
set
{
reportData = value;
this.bsDynasets.DataSource = reportData;
}
}
public TypeOfBuilding TypeOfBuilding
{
get { return _typeOfBuilding; }
set
{
_typeOfBuilding= value;
dataGridView1.Columns.Clear();
if (this.TypeOfBuilding== TypeOfBuilding.House)
{
CreateColumnsForHouses();
}
else if (this.TypeOfBuilding== TypeOfBuilding.Flat)
{
CreateColumnsForFlats();
}
if (this.bsDynasets.DataSource != null)
this.bsDynasets.Filter = "TypeOfBuilding= " + (int)_typeOfBuilding;
}
}
public voidCreateColumnsForFlats()
{
this.dataGridView1.Columns.AddRange(new System.Windows.Forms.DataGridViewColumn[] { this.ColumnsA,ColumnB};
}
public voidCreateColumnsForFlats()
{
this.dataGridView1.Columns.AddRange(new System.Windows.Forms.DataGridViewColumn[] { this.ColumnsC,ColumnD};
}
Сначала устанавливаются ReportData, а затем TypeOfBuilding. Похоже, что после изменения TypeOfBuilding все столбцы очистятся и будет добавлен новый. Вместо этого он сохраняет старые столбцы и добавляет новые.
После исполнения:
this.dataGridView1.Columns.AddRange(new System.Windows.Forms.DataGridViewColumn[] { this.ColumnsC,ColumnD};
есть две колонки.
Перед звонком
dataGridView1.Columns.Clear();
показывает правильное количество столбцов (то есть 4,6,8 и т. Д.). Где я ошибся?