В Telerik Reporting (Desktop), как внедрить подузел json в строковый параметр подотчета

Введение

Основываясь на приведенном ниже примере json, я пытаюсь определить отчет Telerik, используя как основной отчет, так и подотчет, где se second подается с подмножеством данных json основного отчета.

По сути, поток данных имитирует что-то вроде:

  1. Приложение вводит базовые данные json в основной отчет параметр jsonData(строка);
  2. jsonData привязан как источник данных отчета;
  3. Селектор данных Json применяется;
  4. Узел выбранных данных Json Employes вводится во вложенный отчет, который также будет использовать его в качестве источника данных json.

Проблемы возникли на шаге 4, когда я получаю сообщение об ошибке [Недопустимое значение параметра отчета 'jsonData'] при отображении основного отчета.

Похоже, что Telerik Report не может преобразовать данные выбранного поля узла json в правильную строку.

Полный контекст

Для полного контекста:

  • В обоих отчетах:

    • Имеется параметр отчета jsonData строкового типа данных;

    • Определен JsonDataSource;

    • Привязка между строковым параметром jsonData и основным JsonDataSource основана на:

      • Путь к свойству: Datasource.Source
      • Выражение: = Параметры.jsonData.Value
  • В основном отчете:

    • Используется селектор данных JsonDatasource $.Companies, в результате чего получается список, содержащий список компаний, каждый экземпляр которого имеет:
  • Name — строка, представляющая название компании;

  • Employes — объект, содержащий список сотрудников компании.

    • Полные образцы данных json вводятся через параметр jsonData в виде строки;
  • По подотчету:

    • Существует также параметр отчета jsonData со строковым типом данных;
    • Используется селектор данных JsonDataSource $, что должно привести к следующему результату:
      • Список следующих полей:
        • Имя — строка, представляющая имя сотрудника;
        • Заработная плата, числовое значение, представляющее заработную плату работника.
  • Опять же, в основном отчете я использую следующее сопоставление параметров подотчета:

    • Имя параметра: jsonData
    • Значение параметра: Fields.Employes
  • Я использую конструктор отчетов Telerik v15.1.21.716 (настольный компьютер).

Кажется, что селектор данных преобразует дату узла json Employes в System.Object [], что доставляет мне немало хлопот, пытаясь понять, как преобразовать ее обратно в строку json.

Я уже много искал в документации, Интернете,

Прежде чем ты поможешь мне

Хотя я больше всего ценю усилия тех, кто пытается мне помочь:

  • Я использую решение для источника данных только json. Я имею в виду, что меня не интересуют какие-либо другие альтернативные поддерживаемые источники данных Telerik Reporting;
  • Решение должно работать как во время разработки, так и во время выполнения.
{
    "Companies": [
        {
            "Name": "Company1",
            "Employes": [
                {
                    "Name": "Joe",
                    "Wage": 1000
                },
                {
                    "Name": "Jack",
                    "Wage": 2000
                }
            ]
        },
        {
            "Name": "Company2",
            "Employes": [
                {
                    "Name": "Mary",
                    "Wage": 3000
                },
                {
                    "Name": "Mike",
                    "Wage": 4000
                }
            ]
        }
    ]
}
Как сделать HTTP-запрос в Javascript?
Как сделать HTTP-запрос в Javascript?
В JavaScript вы можете сделать HTTP-запрос, используя объект XMLHttpRequest или более новый API fetch. Вот пример для обоих методов:
0
0
60
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Действительно, передача объекта «Employes» в параметр «jsonData» подотчета не должна работать, поскольку объект нельзя напрямую преобразовать в строку JSON. Вы должны преобразовать его через функцию CStr().

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

Также хочу отметить, что в релизе R3 2022 SP1 свойство DataSource было добавлено и в элемент SubReport. Это делает предложенный выше подход устаревшим, поскольку позволяет привязать источник данных подотчета прямо в основном отчете. Например:

Решение 1

Привязка элемента SubReport на основе свойства DataSource:

Property path: DataSource

Expression: = Fields.Employes

Решение 2

В предоставленном @Julio примере, который позволяет вводить узел json в качестве параметра подотчета вместо прямого источника данных, вы должны использовать следующий подход.

Привязка элемента SubReport через параметр вложенного отчета:

Property path: jsonData

Expression: = CStr(Fields.Employes)

Имейте в виду, что...

  • Решение 1 не требует явной привязки внутреннего подотчета к источнику данных;

  • Решение 2 требует дополнительной привязки между подотчетом параметр и его источник данных, как указано в исходном сообщении.

Для получения дополнительной информации по этой теме, проверьте оригинальный оригинальный пост Телерика

Другие вопросы по теме