2012-04-27 3 views
0

У нас есть метод, который возвращает строки, отображаемые в настоящее время в сетке.Класс с элементами, созданными во время выполнения

public override List<object> GetData(int startIndex, int endIndex, string[] rowSortBy, bool[] rowAscSortOrder, 
        string[] rowGroupByOperations, string rowFilterExpression, ref int rowCount)   
    { 

      List<A> list = new List<A>(); 
      .. logic.. 

      return list;   
    } 

Проблема заключается в том, что теперь столбцы сетки являются динамического, они продолжают меняется в зависимости от некоторых условий. Это означает, что мы не можем использовать типизированный класс, поскольку члены данных являются динамическими. Плюс мы не можем изменить тип возврата, List<object> метода GetData, так как это фактически используется сторонним элементом управления.

Редактировать: И нам нужно делать обновления в сетке.

Только способ, я могу думать, это сделать класс с использованием отражения.

Любые идеи?

+0

Возможно, что-то вроде словаря было бы более подходящим? – Sven

+0

Тип возврата не может быть изменен. Список . Словарь не реализует IList. –

+0

Но можете ли вы сделать каждый объект в списке словарем со значениями столбцов? – Sven

ответ

1

Похоже, вам нужно реализовать объект ICustomTypeDescriptor для объектов в вашем списке.

Таким образом запрашивается свойство, и вы можете возвращать соответствующие данные с новыми свойствами во время выполнения.

http://wraithnath.blogspot.co.uk/2011/01/implementing-icustomtypedescriptor-for.html

http://msdn.microsoft.com/en-us/magazine/cc163816.aspx

Это мне потребовалось некоторое время, чтобы выяснить, в первый раз, так как это немного сложнее. Однако он работает!

+0

Позволит ли данные редактировать в сетке? –

+0

@AseemGautam - да, я реализовал проект, сетка будет работать одинаково. Он попытается установить свойство, и ваша реализация обновит правильное значение внутри вашего объекта. – WraithNath

Смежные вопросы