Прежде всего, у меня есть источник данных в моем проекте winforms, где мне нужно было привязать текст в поле selectedlist к вложенному свойству, в данном случае «Имя»
object [0] -> тип ILink -> Name = "adobe"
object [1] -> тип ILink -> Name = "flash"
Для этого я нашел более умного парня здесь , который привел меня к структуре, подобной соответствующему коду в методе GetView ().
Проблема в том, что это не работает для веб-управления, GetView () не вызывается. Поэтому я хотел бы знать, какие модификации мне понадобятся для поддержки веб-управления с использованием этого метода.
public class ILinkCollection : List<ILink>, ITypedList
{
}
public class ILinkProgramView : IILinkViewBuilder
{
public PropertyDescriptorCollection GetView()
{
List<PropertyDescriptor> props = new List<PropertyDescriptor>();
IProgramDelegate del = delegate(ILink d)
{
return d.Program.Name;
};
props.Add(new ILinkProgramDescriptor("FullName", del, typeof(string)));
del = delegate(ILink dl) { return dl.IsActive; };
props.Add(new ILinkProgramDescriptor("IsActive", del, typeof(string)));
PropertyDescriptor[] propArray = new PropertyDescriptor[props.Count];
props.CopyTo(propArray);
return new PropertyDescriptorCollection(propArray);
}
}
public class ILinkProgramDescriptor : PropertyDescriptor
{
}
Затем я устанавливаю источник данных следующим образом:
ILinkCollection iLinkPrograms = new ILinkCollection(new ILinkProgramView());
clbProgs.DataSource = iLinkPrograms;
clbProgs.DisplayMember = "FullName";
clbProgs.ValueMember = "IsActive";