Table of Contents

Slice

Компонент Slice содержит в себе настройки среза куба и выполняет операции по группировки и вычислению данных. Управлять настройками среза можно через подключенный компонент SliceGrid, из кода программы, либо загрузить ранее сохраненную схему из файла или потока.

Свойства

Свойство Описание
public bool AutoUniqueValuesFilter Указывает применять мгновенный пересчет фильтра по уникальному значению поля или обрабатывать его в пакетном режиме. Актуально для выпадающего списка уникальных значений в SliceGrid
public Cube.Cube Cube Объект куба.
public FieldComparerType FieldsOrder Порядок отображения списка полей: ByIndex, ByName, ByCaption.
public int ColCount Возвращает количество колонок в сводной таблице.
public bool HideColZeros Скрывать пустые колонки (колонки, в которых все значения равны 0 или пустые).
public bool HideRowZeros Скрывать пустые строки (строки, в которых все значения равны 0 или пустые).
public bool HideTotalForSingleValue Скрывать итог если узел содержит всего одно значение.
public int RowCount Возвращает количество строк в сводной таблице.
public Types.Language ScriptLanguage Язык скрипта. Представляет собой перечисление со значениями: CSharp = 0, Vb = 1
public string ScriptText Текст скрипта.
public PermissionSet ScriptRestrictions Настройка ограничений скрипта.
public SliceFields SliceFields Контейнер, который содержит все поля среза.
public AxisContainer XAxisContainer Контейнер для полей, размещающихся по оси X. Для измерений.
public AxisContainer YAxisContainer Контейнер для полей, размещающихся по оси Y. Для измерений.
public FiltersContainer FiltersContainer Контейнер для полей располагаемых в зоне фильтров.
public MeasuresContainer MeasuresContainer Контейнер, который содержит показатели.

Основные методы

Метод Описание
public void BeginUpdate() Включить режим обновления (пакетного изменения схемы).
public void EndUpdate() Завершить обновление (пакетного изменения схемы).
public void Clear() Отчистить срез. Сброс всех настроек.
public void Save(Stream stream, SliceSaveExtras extras = SliceSaveExtras.None) Записывает схему среза в поток. Параметр SliceSaveExtras указывает дополнительные настройки сохранения (None, Filters, Groups, Charts).
public void Save(XmlDocument doc, SliceSaveExtras extras = SliceSaveExtras.None) Записывает схему среза в XML документ. Параметр SliceSaveExtras указывает дополнительные настройки сохранения (None, Filters, Groups, Charts).
public void Save(string fileName, SliceSaveExtras extras = SliceSaveExtras.None) Записывает схему среза в указанный файл. Параметр SliceSaveExtras указывает дополнительные настройки сохранения (None, Filters, Groups, Charts).
public bool Load(string fileName) Загрузить схему среза из файла с заданным именем. Схема среза, настройки групп, фильтры и диаграммы сбрасываются перед загрузкой. При успехе возвращает true.
public bool Load(XmlDocument doc) Загрузить схему среза из XML документа. Схема среза, настройки групп, фильтры и диаграммы сбрасываются перед загрузкой. При успехе возвращает true.
public bool Load(Stream stream) Загрузить схему среза из потока. Схема среза, настройки групп, фильтры и диаграммы сбрасываются перед загрузкой. При успехе возвращает true.
public void SetColsWidth(int value) Установить ширину всех колонок. Значение в пикселях.
public void SetColWidth(int columnIndex, int value) Установить ширину заданной колонки. Значение в пикселях.
public void SetRowHeight(int rowIndex, int value) Установить высоту заданной строки. Значение в пикселях.
public void SetRowsHeight(int value) Установить высоту всех строк. Значение в пикселях.
public void Transpose() Транспонировать срез (поменять оси).

Настройка среза

FastReport.Olap.Slice.Slice slice1 = new FastReport.Olap.Slice.Slice();
slice1.Cube = cube;

Настройка структуры среза

Настройка структуры среза заключается в добавлении полей и показателей в нужные контейнеры.

Для добавления и удаления полей в контейнеры оси (XAxisContainer, YAxisContainer), служат следующие методы:

Метод Описание
public int AddSliceField(SliceField sliceField) Добавить поле в срез. Возвращает индекс добавленного элемента.
public int InsertSliceFieldToPosition(SliceField sliceField, int index) Вставить поле среза в указанную позицию. Возвращает индекс добавленного элемента.
public void RemoveAxisField(AxisField axisField) Удалить поле из контейнера оси.
public int AddMeasuresField() Добавляет в ось поле “Показатели”.
public void DeleteMeasuresField() Убирает из оси поле “Показатели”.

Для добавления и удаления показателей в контейнер показателей (MeasuresContainer) служат следующие методы:

Метод Описание
public int AddMeasure(MeasureField measureField) Добавить показатель в контейнер. Возвращает индекс добавленного элемента.
public void DeleteMeasure(MeasureField measureField) Удалить показатель из контейнера. При этом поле переносится в область фильтров.
public void DeleteMeasures() Удалить все показатели из контейнера.
public void DeleteMeasure(int measureIndex) Удалить показатель из контейнера по индексу.
public void InsertMeasure(MeasureField measureField, int index) Вставить показатель в указанную позицию.

Пример:

//Начать изменение структуры среза
slice1.BeginUpdate();

//Добавить поле в контейнер оси X
slice1.YAxisContainer.AddSliceField(slice1.SliceFields.GetFieldByIndex(0));

//Вставить поле SliceField1 в контейнер оси Y в 5 позицию
slice1.YAxisContainer.InsertSliceFieldToPosition(slice1.SliceFields.GetFieldByName("SliceField1"), 5);

//Добавить поле "Показатели" в контейнер оси X
slice1.XAxisContainer.AddMeasuresField();

//Добавить поле в контейнер "Показатели"
slice1.MeasuresContainer.AddMeasure(new MeasureField(slice1, FastReport.Olap.Types.AggregateFunction.Sum, slice1.SliceFields.GetFieldByIndex(1), null, null, "Measure1", "Measure1", false));

//Закончить обновление структуры среза
slice1.EndUpdate();

Показатели можно перемещать в списке для определения порядка их отображения с помощью метода public bool MoveMeasure(int fromIndex, int toIndex). Параметры: индекс элемента который нужно переместить, индекс куда переместить. При успехе возвращает true.

Методы SetAllVisible() и SetNoneVisible() позволяют скрыть все показатели или отобразить все показатели.

Для того, чтобы скрыть или отобразить конкретный показатель, используйте конструкцию:

slice1.MeasuresContainer.GetMeasureFieldByIndex(1).Visible = true;