Перед скачиванием Online Designer с сайта FastReport, вы должны предварительно скомпилировать его. Но, для этого нужно сначала задать конфигурацию программы в специальном визуальном построителе. Но что, если ваши потребности изменились, и вам нужна другая конфигурация? Вам приходится снова создавать OnlineDesigner в визуальном построителе, скачивать его и добавлять в свой проект. А если в рамках одного проекта вам нужны разные конфигурации дизайнера для разных случаев? Ваш код начинает дублироваться для работы с разными версиями дизайнера, что добавляет нежелательные «запахи», как сказал бы не безызвестный Мартин Фаулер.
Но не все так плохо!
В этой статье я расскажу о новой функциональной возможности – изменение конфигурации онлайн дизайнера в коде программы. Собственно, в коде программы мы будем переопределять файл конфигурации дизайнера, который представляет собой документ в формате json. Эта возможность появилась в версии 2017.3.3. Такая функция может быть полезна для смены оформления и некоторых других параметров дизайнера.
Как это работает? Онлайн дизайнер вначале загружает параметры по умолчанию, а затем изменяемые - они переопределяют начальные установки.
Переопределяемый конфиг хранится в свойстве: WebReport.DesignerConfig в виде строки в JSON формате.
Давайте рассмотрим на примере. Создадим ASP.Net MVC приложение. Добавляем в проект папку с Online Designer. Назовем ее WebReportDesigner. В нее помещаем содержимое архива, скачанного с сайта FastReport после конфигурирования дизайнера.
В Reference добавляем ссылку на библиотеки FastReport.dll и FastReport.Web.dll .
Теперь, добавим в контроллер HomeController в Index следующий код:
Пример использования этого свойства:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
using FastReport.Web; using System.Web.UI.WebControls; … public ActionResult Index() { WebReport webReport = new WebReport(); webReport.Width = Unit.Percentage(100); webReport.Height = Unit.Percentage(100); string report_path = GetReportPath(); System.Data.DataSet dataSet = new System.Data.DataSet(); dataSet.ReadXml(report_path + "nwind.xml"); webReport.Report.RegisterData(dataSet, "NorthWind"); webReport.Report.Load(report_path + "Simple List.frx"); webReport.DesignReport = true; webReport.DesignScriptCode = false; webReport.Debug = true; webReport.DesignerPath = "~/WebReportDesigner/index.html"; webReport.DesignerLocale = "en"; webReport.DesignerSaveCallBack = "~/Home/SaveDesignedReport"; webReport.ID = "DesignReport"; // file with custom configuration string designerConfigFile = this.Server.MapPath("~/App_Data/DesignerConfig.json"); // load file in DesignerConfig if (System.IO.File.Exists(designerConfigFile)) webReport.DesignerConfig = System.IO.File.ReadAllText(designerConfigFile); ViewBag.WebReport = webReport; return View(); } |
Как вы заметили, у WebReport добавилось свойство DesignerConfig. В нем мы определяем файл конфига, переопределяющий нужные параметры Online Designer. Файл размещаем в папке App_Data, или любой другой, внутри проекта.
Вот пример содержимого файла /App_Data/DesignerConfig.json:
1 2 3 4 5 6 7 8 9 10 11 12 |
{ "font-names": [ "Calibri", "Calibri Light", "Comic Sans MS", ], "default-font-name": "Calibri", "preload-fonts": ["Calibri"], "scale": 1, "grid": 9.45, "sticky-grid": true } |
В этом файле мы изменили набор шрифтов, доступных в текстовых компонентах онлайн дизайнера.
Давайте теперь рассмотрим все параметры конфигурации могут быть переопределены в файле конфигурации:
{
"url" - куда произвести редирект, после успешного сохранения;
"blank": - открывать в новой вкладке;
"useParent" - в случае, когда онлайн дизайнер в iframe произвести редиркет в родительском окне, в которое встроен дизайнер;
"removeConfirmation" - не показывать подтверждение при редиректе (после сохранения);
},
{
"button-circle" - цвет элементов ресайза и прочих круглых элементов на рабочей области;
"angle-slider" - цвет элемента смены угла;
"default-band-separator" - цвет разделителя между бендами;
"selected-band-separator" - цвет активного разделителя между бендами, когда бенд в процессе ресайза;
},
Панели кастоминации (в левой части, панель инструментов с кнопками)
{
"properties": {
"enable" - активность панели;
"button" - показывать на панели инструментов кнопку для этой панели;
"shown" - отрывать панель по умолчанию при загрузке онлайн дизайнера;
"header": - заголовок панели;
"hasBorder" – визуальная граница панели;
"movable" - возможность двигать панель посредством drag & drop;
"resizable" – возможность изменять размер панели;
},
"events": {
"enable": true,
"button": true,
"shown": false,
"header": true,
"hasBorder": true,
"movable": true,
"resizable": true
},
"report-tree": {
"enable": true,
"button": true,
"shown": false,
"header": true,
"hasBorder": true,
"movable": true,
"resizable": true
},
"data": {
"enable": true,
"button": true,
"shown": false,
"header": true,
"hasBorder": true,
"movable": true,
"resizable": true
},
"preview": {
"enable": true,
"shown": true,
"button": false,
"header": false,
"background": "initial",
"container": "horz"
"width": 125 - ширина элементов превью по умолчанию;
"table": true
}
},
"default-tab-menu": "home" – закладка по умолчанию в верхней панели инструментов при загрузке дизайнера;
"show-saving-progress": "default", - возможные значения - default, small, large;
"notifications": "default", - возможные значения - default, html5, false;
"notifications-mobile": "default" возможные значения - default, html5, false;
}
Таким образом, мы получили широкие возможности по реконфигурированию Онлайн Дизайнера без необходимости его перекомпилировать.