Пропадающий TextBox в Telerik Reporting

Небольшой пост о решении проблемы с пропадающими TextBox'ами в отчетах, построенных на Telerik.

Инсценировка траблы

Строим новый отчет в Visual Studio. При этом в отчете для заполнения данных присутствуют TextBox'ы. Хотя бы вот так: Теперь перейдем к внутренностям. Создаем класс-пустышку для того, чтобы было чем отчет наполнить. В конструкторе отчета создадим коллекцию этих пустышек и заполним ими отчет. У меня получился следующий код отчета:

  1. using Telerik.Reporting;
  2.  
  3. namespace ZhukBlog.Demo.MissingTextBoxTelerik
  4. {
  5.   public partial class SimpleReport : Report
  6.   {
  7.     public SimpleReport()
  8.     {
  9.       InitializeComponent();
  10.       // Генерируем коллекцию пустышек с пустыми текстовыми значениями
  11.       var items = new[]
  12.               {
  13.                 // Все ОК
  14.                 new ReportDataItem {Text1 = "Text1PropertyValue", Text2 = "Text2PropertyValue"},
  15.                 // Второе свойство пустое
  16.                 new ReportDataItem {Text1 = "Text1PropertyValue", Text2 = string.Empty},
  17.                 // Первое свойство отсутствует
  18.                 new ReportDataItem {Text1 = null, Text2 = "Text2PropertyValue"}
  19.               };
  20.       DataSource = items;
  21.     }
  22.   }
  23.  
  24.   /// <summary>
  25.   /// Класс - пустышка для демонстрации
  26.   /// </summary>
  27.   public class ReportDataItem
  28.   {
  29.     public string Text1 { get; set; }
  30.     public string Text2 { get; set; }
  31.   }
  32. }

Запускаем отчет на просмотр в веб-приложении, используя при этом ReportViewer, и видим примерно следующее:

Лечим

TextBox не рисуется в случае, если его содержимое пусто. Поэтому подменяем эту пустоту другой, правильной пустотой, т.е. Non Breaking Space. В UTF кодировки это будет 0x00A0. Заменяем в 16 строке string.Empty на "\u00A0". То же самое проделываем с null в строке 18. Запускаем отчет в браузере и смотрим:


Поделиться

Коментарии