Добавлено расширение FastReport Business Graphics. Это новый продукт для интерактивной визуализации данных из приложений.
Подробнее о FastReport Business Graphics
Добавлен компонент 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) { // настраиваем источник данных 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