#c# #winforms #datagridview
#c# #winforms #datagridview
Вопрос:
Я хочу создать двустороннюю привязку из DataListView к списку, состоящему из списка. Как мне это сделать?
На основе приведенного ниже кода я создаю список, подобный этому:
probe1 probe2 probe3 probe4 ...
1 12.3 4.2 6.3 12.5
2 65.2 2.5 12.4 54.6
3 54.2 64.3 21.5 22.2
. . .
- Заголовок строки — это строка в значениях. <372 значений
- Заголовок столбца — это строка в зондах. <120 проб
- Всего не более 44640 значений, но обычно это несколько тысяч значений
И код
public IList<Probe> Probes{get;private set;}
public class Probe
{
public Probe(int maxValues)
{
Values = new double[maxValues];
}
public IList<double> Values{get;private set}
}
Ответ №1:
Сначала вы должны выровнять список. Создайте новый тип, подобный ProbeValue, содержащий как значение свойства:double, так и Probe:Probe. Затем создайте новый CollectionView из сглаженного результата и примените GroupDescription к свойству Probe. Привяжите свой listview к этому
http://msdn.microsoft.com/en-us/library/system.windows.data.collectionview.aspx
Комментарии:
1. CollectionView — это класс из PresentationFramework.dll но мое приложение является WinForms-приложением. Поэтому я не могу его использовать.
2. Ваше право, извините за это. Вы это исправили? codeproject.com/KB/list/ListView_DataBinding.aspx Будет сложно сделать это из коробки. Вы можете либо перезаписать из ListView и рядом с логикой привязки данных выше, также динамически создавать столбцы, хотя это потребует много работы. Другой грязный взлом заключается в предоставлении сжатого списка, где каждая запись имеет X зондов в качестве свойств, где указан только один.