Пропадающий 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. Запускаем отчет в браузере и смотрим:

Виталий Жуков

Виталий Жуков

SharePoint архитектор, разработчик, тренер, Microsoft MVP (Office Development). Более 15 лет опыта работы с SharePoint, Dynamics CRM, Office 365, и другими продуктами и сервисами Microsoft.

Смотрите также

SharePoint 2007. Проверка на наличие элемента в списке

SharePoint 2007. Проверка на наличие элемента в списке

SharePoint 2007. База данных содержимого

SharePoint 2007. База данных содержимого

SharePoint 2007. Свой контрол на панели свойств веб-парта

SharePoint 2007. Свой контрол на панели свойств веб-парта

SharePoint 2007. Максимальное/минимальное значение поля в списке

SharePoint 2007. Максимальное/минимальное значение поля в списке

SharePoint 2007. Получение данных из нескольких списков и узлов

SharePoint 2007. Получение данных из нескольких списков и узлов