Типичная ошибка
Итак, за кэширование отчета отвечает свойство ReportCacheMode, которое пользователи зачастую включают перед загрузкой отчета. Пример:StiReport report = new StiReport();
report.ReportCacheMode = StiReportCacheMode.On;
report.Load(path);
В этом случае, кэширование отчета не будет включено, и вот почему. Искомое свойство ReportCacheMode, как и большинство свойств отчета, сохраняется в шаблоне отчета. Поэтому значение, установленное перед загрузкой отчёта, будет перезаписано значением из шаблона. Решение
Таким образом, для включения кэширования отчета из кода, необходимо установить свойство ReportCacheMode в On не перед, а ПОСЛЕ загрузки отчёта.Соответственно, код будет выглядеть следующим образом:
StiReport report = new StiReport();
report.Load(path);
report.ReportCacheMode = StiReportCacheMode.On;
Технические нюансы
Еще один часто задаваемый вопрос: свойство ReportCacheMode не записано в шаблоне, но оно всё равно устанавливается в Off после загрузки отчёта. Почему?Для уменьшения размера файла шаблона, при сохранении в него записываются только те свойства, значения которых отличаются от значения по умолчанию. А перед загрузкой шаблона в методе report.Load() большинство свойств автоматически устанавливаются в значение по умолчанию. И уже в процессе загрузки шаблона свойства устанавливаются в значения из шаблона.
Поэтому, если свойство будет изменено перед загрузкой отчета, оно всё равно установится в значение по умолчанию перед загрузкой отчета.