Сегодня мы осветим один из наиболее часто задаваемых нашими пользователями вопросов – как включить кэширование отчета из кода?

Типичная ошибка

Итак, за кэширование отчета отвечает свойство 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() большинство свойств автоматически устанавливаются в значение по умолчанию. И уже в процессе загрузки шаблона свойства устанавливаются в значения из шаблона.

Поэтому, если свойство будет изменено перед загрузкой отчета, оно всё равно установится в значение по умолчанию перед загрузкой отчета.
By using this website, you agree to the use of cookies for analytics and personalized content. Cookies store useful information on your computer to help us improve efficiency and usability. For more information, please read the privacy policy and cookie policy.