Опять DataGrid + Collection
От: gbear Россия  
Дата: 21.05.03 10:43
Оценка:
Наше Вам...

Перерыл форум — ответа не нашёл... Вопрос такой: как заставить DataGrid отображать содержимое коллекции? Ктонить с этим таки разобралси?

По умолчанию эта вредина отображает лишь public property элемента коллекции. В моем случае — элемент коллекции (ЭК) — другая коллекция (да-да.. так всё запущено ). Вроде намечался выход с реализацией ICustomTypeDescriptor для ЭК. В смысле, по ICustomTypeDescriptor.GetProperties() возвращать свою коллекцию... Взял за основу пример из "Конфигурирование .NET-приложений" — переделал под свои нужды. PropertyGrid работает замечательно — DataGrid нет... Осчусчение такое, что DataGrid ложит на ICustomTypeDescriptor балшой девайс. Тем не менее стал ругаться на то, что не может найти public property "Count" . Т.е. вроде как берёт всё же мою коллекцию пропертей (в ней Count'а нет)... Но тогда непонятно, откуда он его (Count) выкопал?!

В общем, буду весьма признателен за инфу какие именно в кастомной коллекции нужно реализивывать интерфейсы для того чтобы DataGrid её валидно отображал.

---
С уважением, Сиваков Константин.

23.12.03 18:25: Перенесено модератором из '.NET' — AVK
Re: Опять DataGrid + Collection
От: mihailik Украина  
Дата: 21.05.03 11:00
Оценка:
G>В общем, буду весьма признателен за инфу какие именно в кастомной коллекции нужно реализивывать интерфейсы для того чтобы DataGrid её валидно отображал.

DataGrid строит колонки не на основе свойств Datasource-коллекции, а на основе свойств её членов.

Например, напихай в массив или ArrayList Button'ов — и будешь видеть колонки по свойствами класса Button.

Насколько я понял, DataGrid всегда анализирует только первый элемент коллекции и хочет, чтобы у всех последующих были такие же.

P.S. Кстати, не ICollection а IList требуется для DataGrid.
... << RSDN@Home 1.0 beta 6a >>
Re[2]: Опять DataGrid + Collection
От: gbear Россия  
Дата: 21.05.03 12:16
Оценка:
Здравствуйте, mihailik, Вы писали:

G>>В общем, буду весьма признателен за инфу какие именно в кастомной коллекции нужно реализивывать интерфейсы для того чтобы DataGrid её валидно отображал.


M>DataGrid строит колонки не на основе свойств Datasource-коллекции, а на основе свойств её членов.


Так и есть... Есть коллекция (К1) — которая выступает в роли DataSourc'а. Каждый элемент этой коллекции — тоже коллекция (K2) — "свойства" которой и нужно отобразить. DataGrid — по умолчанию — отображает мне свойство Count от К2

M>Насколько я понял, DataGrid всегда анализирует только первый элемент коллекции и хочет, чтобы у всех последующих были такие же.


Дык и ето тоже есть... K2 коллекции содержат одинаковое кол-во элементов одного типа. Я хочу сделаь так, что бы проперти K2 коллекции подменялись на сгенерированную мной PropertyDecriptorsCollection — построенную на основе значений свойств элементов K2.

M>P.S. Кстати, не ICollection а IList требуется для DataGrid.

Это не важно, т.к. CollectionBase реализует их оба. Плюс IEnumerable в придачу.

Вопрос всё ещё открыт...

Ктонить вкурсе насчёт функциональной нагрузки IBindingList? Его реализация, как советуют на GotDotNet, результата не пренесла

PropertyGrid по прежнемy работает как надо.
---
С уважением Сиваков Константин
Re[3]: Так есть ли решение ?
От: KonSol  
Дата: 22.07.03 11:35
Оценка:
Добрый день.
Удалось ли решить эту проблему и если да то как ?
С Уважением, KonSol
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.