Crystal Reports .NET - CrystalReportViewer - опции экспорта
От: D-Mann  
Дата: 25.12.08 14:36
Оценка:
Всем доброго времени суток.

В ASP.NET приложении используется контрол CrystalReportViewer. При его использовании мы столкнулись с давней проблемой экспорта в Excel в режиме Data only. Поэтому было принято решение написать собственный функционал экспорта в Excel. Проблема заключается в следующем — как теперь настроить CrystalReportViewer, чтобы при нажатии на кнопку экспорта отчета в выпадающем списке доступных форматов для экспорта убрать этот злополучный пункт "Excel 97-2000 (Data only)"?

Вариант со своим полностью новым окном с доступными форматам экспорта накладен, а вариант с редактированием export.js — файла использующегося viewer-ом для генерирования окошка с опциями эксопрта — на машине заказчика неприемлем из-за своей брутальности (другие приложения на севере тоже могут использовать CrystalReportViewer).

Именно рассмотрение второго варианта натолкнуло меня о мысли, что где-то в объектной модели вьюера можно передавать список доступных форматов экспорта, но как это сделать я не нашел ни в документации к CR (точнее даже, ее обрывки в сети, так как поиск нормальной представляет собой нетривиальную задачу), ни в www. Поэтому обращаюсь к гуру RSDN по Crystal Reports за помощью.

Подробнее об отброшенных вариантах:
  1. Полностью новое окно — способ, рекомендованный в одной из статей на MSDN — создаем свою страницу с дроп-дауном, который заполняем сами и в зависимости от выбранного значения производим определенные телодвижения, чтобы произвести экспорт. Накладно, потому что все остальные типы экспорта полностью устраивают. И городить огород из-за одного пункта меню очень не хочется.
  2. При установке CR.NET в папке c:\Inetpub\wwwroot\aspnet_client\system_web\2_0_50727\ создается подпапка CrystalReportWebFormViewer3, содержащая служебные файлы вьюера: стили, JavaScript, картинки, еще что-то. Так вот файл export.js судя по всему отвечает за динамическое генерирование того самого окошка с опциями экспорта. Он содержит в себе функцию getFormatDropdownList(), из кода которой
    if( xls )
    {
        list += "<OPTION value=\"MSExcel\">" + L_ExcelFormat + "</OPTION>";
    }
    if( recXls )
    {
        list += "<OPTION value=\"RecordToMSExcel\">" + L_ExcelRecordFormat + "</OPTION>";
    }

    видно, что динамическое добавление пунктов дроп-дауна зависит от каких-то мистических переменных. Вот мне интересно каких?! И как это передать из объектной модели? В объекте ReportDocument я нашел лишь свойство ExportOptions.ExportFormatType, которое принимает естественно один единственный тип экпорта данных. Собственно брутальный способ заключается в комментировании строчки:
    list += "<OPTION value=\"RecordToMSExcel\">" + L_ExcelRecordFormat + "</OPTION>";

Заранее спасибо за помощь.
crystal reports .net
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.