В версии 2021.1 добавлен компонент ListDataSet позволяющий загружать в куб данные используя Windows Forms Data Binding
Добавлена возможность загружать данные в куб используя механизм Windows Forms Data Binding, использующийся в стандартных элементах управления: DataGridView, ListView и Combobox.
Windows Forms Data Binding работает с данными посредством компонента BindingSource, который выступает в роли прокси (больше информации по теме можно найти в MSDN).
Далее приведен небольшой пример загрузки данных из List<>.
1. Объявляем класс ProductInfo
public class ProductInfo { public String Name { get; set; } public String Group { get; set; } public int Count { get; set; } }
2. Создаем список записей ProductInfo
List<ProductInfo> CreateProducts() { return new List<ProductInfo> { new ProductInfo {Group = "Bakery products", Name = "Ciabatta", Count = 3}, new ProductInfo {Group = "Bakery products", Name = "Bread", Count = 5}, new ProductInfo {Group = "Bakery products", Name = "Croissant", Count = 1}, new ProductInfo {Group = "Alcohol", Name = "Wine", Count = 6}, new ProductInfo {Group = "Alcohol", Name = "Whiskey", Count = 2}, new ProductInfo {Group = "Alcohol", Name = "Beer", Count = 5}, new ProductInfo {Group = "Dairy products", Name = "Yoghurt", Count = 5}, new ProductInfo {Group = "Dairy products", Name = "Milk", Count = 4} }; }
3. Настраиваем Cube и slice
private void Form1_Load(object sender, EventArgs e) { // configure data source listDataSet1.DataSource = CreateProducts(); // load data to Cube cube1.Active = true; // configure Slice slice1.YAxisContainer.AddSliceField(slice1.SliceFields.GetFieldByName("Group")); slice1.YAxisContainer.AddSliceField(slice1.SliceFields.GetFieldByName("Name")); var measure = new FastReport.Olap.Slice.MeasureField(slice1, FastReport.Olap.Types.AggregateFunction.Sum, slice1.SliceFields.GetFieldByName("Count")); slice1.MeasuresContainer.AddMeasure(measure); slice1.XAxisContainer.AddMeasuresField(); }
В результате получаем следующий вид:
Полный пример расположен в каталоге Demos\C#\DataBindings.