2015-07-15 3 views
1

Я использую хрустальный отчет для одного из моих отчетов. Мне нужно динамически устанавливать поля для отчета. Поля устанавливаются пользователем, поэтому мне нужно применять маржи программно.заданные поля страницы программно в отчете кристалла

Я использую следующий код, чтобы установить поля программно.

ReportDocument rd = new ReportDocument(); 
PageMargins pageMargins = new PageMargins(); 
pageMargins.leftMargin = 25; 
pageMargins.topMargin = 100; 
pageMargins.rightMargin = 25; 
pageMargins.bottomMargin = 50; 
rd.PrintOptions.ApplyPageMargins(pageMargins); 

, а затем показать предварительный просмотр печати пользователю, а затем пользователь может распечатать. Я использую ниже код для показа предварительного просмотра.

Response.Buffer = false; 
Response.ClearHeaders(); 
Response.ClearContent(); 
rd.ExportToHttpResponse(ExportFormatType.PortableDocFormat, System.Web.HttpContext.Current.Response, false, "Print"); 

Выше не работает для меня. Он не применяет поля (То же самое работает, когда я устанавливаю поля статически с Дизайн -> Настройка страницы). Он показывает содержимое, как если бы поля не применялись при динамическом использовании. Я прикрепил изображение для того, как он отображается как предварительный просмотр.

Preview of report

Может кто-нибудь помочь мне за то, что может быть проблема? Почему маржи не применяются?

ответ

0

Я нашел решение этой проблемы. С кодом, который я использовал ранее, есть небольшое изменение. Я использовал код ниже.

ReportDocument rd = new ReportDocument(); 
PageMargins margins; 
// Get the PageMargins structure and set the 
// margins for the report. 
margins = rd.PrintOptions.PageMargins; 
margins.bottomMargin = 350; 
margins.leftMargin = 600; 
margins.rightMargin = 350; 
margins.topMargin = 300; 
// Apply the page margins. 
rd.PrintOptions.ApplyPageMargins(margins); 

Так что все работает отлично. Нам просто нужно получить поля страницы документа отчета и установить поля там вместо новой инициализации объекта PageMargins.

Смежные вопросы