Старейшина
Зарегистрирован: 29 September 2002
Сообщения: 647
Примеры кода: 2
|
RE: Биндинг своего класса с датагридом (WinForms) |
20 January 2005 14:37 |
|
|
|
|
Подскажите, плз.
Есть класс - коллекция объектов, как его сбиндить с датагридом, чтобы самому задать правила его отображения в гриде?
А что ты подразумеваешь под правилами?
пишешь myDataGrid.DataSource = = myItemsList;
и он тебе отобразит список этих айтемов.
Стобыцы будет генерировать при автоегенерации беря рефлексией своство текущего айтема... и если столбца с таким именем нет - добавить его.
Если вручную нужно тебе столбцы задать - названия пропетей обхектов и есть названия стобцов в TableStyle
Если хочешь визуально связывать свой список с источником данных, то тут уже обычным ArrayList не обойдешься. В идеале тебе нужен типизированный список, ну и IComponent инетрфейс сделать ему, чтобы на форму он ложился визуально и IBindableList - чтобы ты видел этот список как предлагаемый источник данных для элементов вотображения в Properties Manager.
Что еще... Чтобы при создании DataGridTableStyle для твоего грида, нужный стиль подхватывался к твоему списку - в MappingName пропиши или myClass[] - если у тебя типизированная коллекция, или ArrayList - если просто список айтемов.
Еще вспомнил... Автогенерация стобцов работает беря свойства первого айтема в списке. А если вдруг ты список без айтемов отдашь гриду - он тебе не покажет стобцы. Для того, чтобы он их сгенерировал и показал - тебе еще в классе списка хорошо бы индексатор типизированный сделать.
Т.е. грид как генерит... В такой последовательности:
1. Смотрит типизированный индексатор и вычитывает список свойств возвращаемого объекта.
2. Если индексатора нет, то в качестве образца берется первый айтем в списке
3. если такового тоже нет - столбцы не генерятся.. We take I.T. easy!
|
|