ArcGIS JavaScript API 4.11 - печать вызывает проблему обратной передачи в asp.net - PullRequest
1 голос
/ 13 июня 2019

Я новичок в ESRI и API JavaScript. Я пытаюсь реализовать задачу печати, как показано здесь: https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-Print.html

Я использую следующий код для создания функции печати, и он отображается правильно, как показано на рисунке:

require(["esri/widgets/Print"], function (Print) {
  var print = new Print({
    view: view,
    printServiceUrl: "https://printserviceurl/services/PrintService/GPServer/Export%20Web%20Map"
  });

    // Adds widget below other elements in the top left corner of the view
    view.ui.add(print, {
      position: "bottom-left"
    });
});

enter image description here

Проблема, с которой я сталкиваюсь, - это нажатие кнопки «Дополнительные параметры», «Экспорт» или других функций, вызывающих обратную передачу. Это веб-приложение asp.net, и карта находится в элементе управления главной страницы asp.net. Это вызывает обратную передачу всей страницы. У кого-нибудь есть рекомендации по предотвращению обратной передачи всей страницы и сохранению функциональности печати? Он работает правильно, если я перемещаю его за пределы тега, но чтобы правильно расположить его на странице, область содержимого должна оставаться внутри формы.

1 Ответ

1 голос
/ 13 июня 2019

Я смог найти решение для этого в конце концов. Я использовал следующий код для создания функции печати и вставил его в div вне тега формы asp.net.

require(["esri/widgets/Print"], function (Print) {
            //create the print widget and insert into the print container
            var print = new Print({
                view: view,
                printServiceUrl: "https://printserviceurl/services/PrintService/GPServer/Export%20Web%20Map"
            }, document.getElementById("divPrintContainer"));
        });

Затем я использовал стилизацию, чтобы разместить контейнер там, где я хочу. Этот шаг может потребовать некоторых пользовательских стилей в зависимости от того, где вы хотите, чтобы div появился. Если он находится за пределами тега формы, он предотвращает перезагрузку всей страницы при обратной передаче при взаимодействии с виджетом печати. ​​

<div id="divPrintContainer" style="position:absolute;bottom:20px;right:30px;"></div>
...