Как я могу передать несколько массивов объектов json в отчет stimulsoft в Javascript

#javascript #stimulsoft

#javascript #stimulsoft

Вопрос:

У меня есть этот код на javascript:

 var viewer = new window.Stimulsoft.Viewer.StiViewer(
  null,
  "StiViewer",
  false
);

var report = new window.Stimulsoft.Report.StiReport();
const { data: reportData } = await GetRequestFromStore(
  this.state.reportDate,
  this.state.storeId
);

var json = {
  DataSet: reportData.requestItems,
};
var dataSet = new window.Stimulsoft.System.Data.DataSet("JSON");
dataSet.readJson(json);
report.regData("JSON", "JSON", dataSet);

report.loadFile(this.state.reportName);
report.dictionary.variables.getByName(
  "requestDate"
).valueObject = this.state.jalaaliReportDate;

viewer.report = report;

viewer.renderHtml("viewer");
 

и этот дизайн источника данных в stimulsoft designer

введите описание изображения здесь

все работает хорошо. Но я хочу передать в отчет несколько массивов объектов json. что-то вроде этого.

введите описание изображения здесь

Как я могу передать массив объектов Items и массив объектов Descriptions в отчет в коде. Спасибо.

Ответ №1:

Набор данных с двумя таблицами решил мою проблему. Я объединил два массива объектов JSON в один объект JSON и зарегистрировал набор данных.

теперь данные отчета выглядят так:

 let reportData = {
  items: [],
  descriptions: [],
};
 

введите описание изображения здесь

и дизайн набора данных в Stimulsoft designer:

введите описание изображения здесь

и эта часть кода сработала для меня.

 var viewer = new window.Stimulsoft.Viewer.StiViewer(null, "Viewer", false);

var report = new window.Stimulsoft.Report.StiReport();
const { data: reportData } = await GetRequestFromStore(
  this.state.reportDate,
  this.state.storeId
);

var dataSet = new window.Stimulsoft.System.Data.DataSet("DS1");
dataSet.readJson(JSON.stringify(reportData));//one JSON object

//this line of code added,too.
report.dictionary.databases.clear();
report.regData("DS1", "DS1", dataSet);

//this line of code is also required.
report.dictionary.synchronize();

report.loadFile(this.state.reportName);
report.dictionary.variables.getByName(
  "requestDate"
).valueObject = this.state.jalaaliReportDate;

viewer.report = report;

viewer.renderHtml("viewer");