У меня проблемы с элементом datagridview, который я использую в VS2008.
Этот DataGridView фактически является вкладкой в элементе TabControl.
Я дал ему 5 столбцов, которые должны быть заполнены элементами из костюма Объекта, который я сделал.
По сути, это небольшое библиотечное приложение, которое содержит основной класс и несколько его классов. Все они имеют метод ToString (), который представляет данные в виде строки ключевых слов, содержащих значения, необходимые для заполнения таблицы данных.
Мне нужны только первые 5, хотя некоторые объекты будут иметь до 12 ключевых слов.
В настоящее время всякий раз, когда я добавляю объект, сетка данных не заполняется сама собой, вместо этого она добавляет количество столбцов, равное количеству ключевых слов, которые есть у конкретного объекта.
Что я сейчас делаю, так это:
public void libDataGrid_Click(object sender, EventArgs e)
{
if(this.manager.Lib.LibList[0] != null)
{
libDataGrid.DataSource = this.manager.Lib.LibList;
libDataGrid.Refresh();
}
}
this.manager.Lib.LibList
возвращает и ArrayList, в котором хранятся все объекты. ArrayList может содержать элементы всех производных классов, но, поскольку они все связаны, строковое представление всегда будет содержать элементы, необходимые для заполнения сетки.
Я не вижу, как я могу отфильтровать только первые пять, и им нужно поместить их в правильные столбцы.
И еще одна вещь. В настоящее время я могу только обновить DataGridView, нажав на него. Это должно измениться, когда я переключаюсь на это, переключаюсь к его определенной вкладке на Tabcontrol, я имею в виду.
Я попытался добавить аргумент для SelectedIndexChanged, но это ничего не дает на самом деле ...
Или, по крайней мере, он ничего не делает.
Я имею в виду, что я закомментировал код выше и добавил вместо этого:
public void tabControl1_SelectedIndexChanged(object sender, EventArgs e)
{
libDataGrid.DataSource = this.manager.Lib.LibList;
libDataGrid.Refresh();
}
Это обновляет его при каждом изменении вкладки, независимо от того, на какую.
Мне пришлось удалить оператор if, поскольку он дал мне исключение. Возможно, потому что длина ArrayList не установлена при инициализации.