Страница 1 из 2
загрузка json данных из http request
Добавлено: 02 июн 2017, 09:09
Atiss
Добрый день.
Можно ли подгрузить json данные в dataset, используя url и параметры напрямую,
Сейчас я делаю сначала аякс запрос, получаю json и потом только передаю в dataset. А хотелось бы какой то механизм, которому достаточно лишь сообщить откуда и с какими параметрами получать данные.
Re: загрузка json данных из http request
Добавлено: 02 июн 2017, 10:54
Atiss
спасибо
Re: загрузка json данных из http request
Добавлено: 02 июн 2017, 11:03
Vladimir
Здравствуйте,
Вы можете использовать указанный ниже код для загрузки данных по URL, так же в строке адреса можно использовать GET параметры.
Код: Выделить всё
var dataSet = new Stimulsoft.System.Data.DataSet();
dataSet.readJsonFile("http://localhost:54200/Data/Demo.json");
report.regData("Demo", null, dataSet);
POST параметры и соответствующий запрос не предусмотрены, здесь необходима предварительная загрузка данных отдельным AJAX методом.
Спасибо.
(извините за предыдущий не совсем верный ответ)
Re: загрузка json данных из http request
Добавлено: 30 июн 2017, 12:56
Atiss
Добрый день. Спасибо за ответ. Т.е. параметры необходимо задавать следующим образом? А нет ли более элегантного метода?
Код: Выделить всё
dataSet.readJsonFile("/reports/well_reports/"+"?id="+this.id+"&start_dt="
+this.lookupReference('fromDate').getValue().toISOString().substr(0,19)
+"&end_dt="+this.lookupReference('toDate').getValue().toISOString().substr(0,19)
+"&report_type="+this.lookupReference('reports').getValue());
И еще вопрос. вышеуказанным способом удалось считать json.
Но, изначально первый вопрос появился из за того, что загрузка json занимается достаточно долгое время, а вьюер не показывает маску загрузки. Была мысль, что если запрашивать непосредственно в dataset, маска появится перед загрузкой. Однако не появляется. Подскажите пожалуйста, как сделать чтобы маска загрузки появлялась раньше?
Re: загрузка json данных из http request
Добавлено: 30 июн 2017, 17:14
Aleksey
Здравствуйте,
В данный момент, указанная функция может работать только с GET параметрами запроса.
Для показа, скрытия загрузки можно использовать следующий код:
viewer.jsObject.controls.processImage.show();
viewer.jsObject.controls.processImage.hide();
Спасибо.
Re: загрузка json данных из http request
Добавлено: 01 июл 2017, 12:25
Atiss
Пишу так:
Код: Выделить всё
var viewer = new Stimulsoft.Viewer.StiViewer(options, "StiViewer", false);
viewer.jsObject.controls.processImage.show();
но, viewer.jsObject = undefined
Re: загрузка json данных из http request
Добавлено: 04 июл 2017, 11:33
Aleksey
Здравствуйте,
viewer.jsObject инитиализируется только после viewer.renderHtml("viewerCont");
Код: Выделить всё
var viewer = new Stimulsoft.Viewer.StiViewer(options, "StiViewer", false);
viewer.renderHtml("viewerCont");
viewer.jsObject.controls.processImage.show();
Спасибо.
Re: загрузка json данных из http request
Добавлено: 11 июл 2017, 13:50
Atiss
К сожалению проблема не решается таким образом. Т.е. пока происходит загрузка емкого отчета, вьюер не появляется, т.е. просто пустое место. И после того как данные загрузились через несколько секунд, только потом появляется и вьюер и маска загрузки. Что я делаю не так? Хотелось бы чтобы сначала отрисовался вьюер, потом только пошел запрос отчета и параллельно появилась маска загрузки.
Код: Выделить всё
let options = this.createViewerOptions();
// Create the report viewer with default options
this.viewer = new Stimulsoft.Viewer.StiViewer(options, "StiViewer", false);
this.viewer.renderHtml("viewerContent");
this.viewer.jsObject.controls.processImage.show();
// Create a new report instance
var report = new Stimulsoft.Report.StiReport();
var dataSet = new Stimulsoft.System.Data.DataSet();
dataSet.readJsonFile("/reports/well_reports/"+"?params);
let type = this.lookupReference('reports').getSelection().data.type;
report.loadFile("static/js/map/components/reportTemplates/"+type+".mrt");
report.dictionary.databases.clear();
report.regData("tmpl", "tmpl", dataSet);
// Assign report to the viewer, the report will be built automatically after rendering the viewer
this.viewer.report = report;
this.viewer.jsObject.controls.processImage.hide();
Re: загрузка json данных из http request
Добавлено: 17 июл 2017, 11:14
HighAley
Здравствуйте.
Возможно мы немного не с той стороны подошли к вашей проблеме.
В нашем продукте можно в отчёт добавить переменную и потом использовать их в URL подключения к JSON данным.
Для этого не надо запрашивать JSON данные вашим кодом. Они будут запрошены перед построением отчёта нашим движком.
Значение переменной можно
запросить у пользователя или
задать её из кода.
В самом URL переменную можно использовать следующим образом:
Напишите какой вариант вам больше подходит, и, если вам ещё нужна наша помощь, то в каком направлении.
Спасибо.
Re: загрузка json данных из http request
Добавлено: 19 июл 2017, 12:27
Atiss
Здравствуйте. Вот тут мы и возвращаемся к самому началу. Все так и было. Я изначально забираю откуда надо аяксом данные, и потом подгружаю в отчет. Вся проблема в том, что загрузка данных занимает ощутимое время, и все это время крутится наша маска, а потом в момент подрузки в report, включается ваша маска, что выглядит некрасиво. Нужно либо нашу маску отключить, но при этом чтобы была возможность включить вашу маску еще до того, как данные подгружены в репорт, либо отключить вашу совсем. Даже второй вариант предпочтительнее, чтобы во всей системе была единая маска.
Код: Выделить всё
this.viewer.jsObject.controls.processImage.hide();
как то не очень помогает.