| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > VB .NET > Binding DataGridView и List(Of Class) |
| Автор: thomas 19.7.2007, 20:22 | ||||
| Приветствую всех. Работаю над программой, которая перегоняет данные из Excel в XML. Входной файл Excel содержит таблицу с адресами. Кол-во и названия столбцов могут быть различными. А вот выходной стандарт XML строго определенный. Есть тестовый вариант, который выглядит так: смотри присоединенный файл. Там для создания связей между данными из таблицы Excel и "полями" которые могут быть включены в структуру XML я использовал CheckBox'ы и ComboBox'ы, содержащие наименования полей из таблицы Excel. Но заказчик требует предусмотреть возможность добавления элементов в требуемые для XML данные. Сейчас там 23 варианта. Могут добавиться еще штук несколько. И в моём варианте придется переделывать весь GUI. Потому принято решение использовать новые возможности DataGridView, с его разлиными типами ячеек. В данном случае CheckBox'ы и ComboBox'ы. В базе данных создана таблица с Code и Discriptions компонентов. Если произойдут изменения, то новые элементы добавляются в таблицу и все. При старте программы она создает коллекцию "элементов" и отображает их в DataGridView. А дальше мы уже выбираем какие колонки и куда относятся и заполняем таблицу и из нее пишем XML. Но это другая история. Так вот. Создал класс, содержащий три поля (code, deckription, fieldlength и checkbox c combobox.
Потом в событии загрузки формы создаю коллекцию экземпляров класса, которые соответствуют данным из таблицы элементов адресов. И после этого хочу изобразить эту коллекцию в DataGridView
DataGridView создается, отрисовывается, но без CheckBox'ов и ComboBox'ов. Колонки для них есть, а самих элементов нет. Кто подскажет, где грабли? Что я там не так написал? |
| Автор: thomas 19.7.2007, 20:28 |
| Пока получается вот что. См. картинку |
| Автор: thomas 21.7.2007, 10:32 |
| Тему пометил как решенную. То что я хотел от DataGridView с технической точки зрения невозможно. Потому как этот контрол в своих ячейках. так сказать, эмитирует другие контролы. Соответственно передать ему коллекцию обьектов, содержащую контролы, для отображения в принципе не правильный подход. Нужные "контролы" внутри DataGriedView надо создавать в ручную и прописывать им события. Более подробная информация на страницах журнала http://www.rsdn.ru/article/dotnet/DataGridView20.xml и продолжение http://www.rsdn.ru/article/dotnet/DataGridView20part2.xml |