Table of Contents

Информация о выпуске FastCube Net 2021.1

Новые возможности

Добавлено расширение FastReport.BG

Добавлен компонент 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; }
}
  1. Создаем список записей 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}
    };
}
  1. Настраиваем Cube и slice
private void Form1_Load(object sender, EventArgs e)
{
    // настраиваем источник данных
    listDataSet1.DataSource = CreateProducts();
    // подгружаем данные в Cube
    cube1.Active = true;
    // настраиваем 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.

Другие изменения

  • В контекстное меню XAxisZone, YAxisZone компонента SliceGrid добавлен пункт Copy, копирующий в буфер обмена заголовок выбраного узла
  • В выпадающих списках вставка из буфера осуществляет поиск значения
  • При двойном клике по значению в выпадающем фильтре измерения осуществляется позиционирование на это значение в SliceGrid