bernova Ответов: 1

Как передать строковый массив в javascript в activex


Всем привет
мы хотим создать Activex, который печатает массив строк, но как обойти массив для printcontroleventhandler следующим образом , потому что это делегат:

[ComVisible(true)]
        public string CreatePrint(Int16 iPrintCount,string[] arr)
        {
            try
            {
                this.Doc = new PrintDocument();
                this.Doc.PrintPage += new PrintPageEventHandler(this.PrtPage(arr));
                this.Doc.Print();
            }
            catch (Exception e)
            {
                return e.Message;
            }
        }


но arr [] - это неправильный параметр.

Что я уже пробовал:

Я тестирую следующий код просто когда проходят уникальную строку правильно, но когда пройдет время, это неправильно.

Sergey Alexandrovich Kryukov

ActiveX, используемый в браузере, - это большое злоупотребление. Он все равно не будет работать для большинства систем и браузеров, и это очень хорошо. Кроме того... нет такого понятия, как "Java script"; Java не является языком сценариев.

А использовать ActiveX на стороне сервера было бы совершенно бессмысленно.

Я понятия не имею, почему такая тривиальная проблема, как печать некоторых строк, нуждается в ActiveX. Вы не должны управлять принтером из веб-приложения; это слишком навязчиво.

—СА

bernova

Конечно, вы программист, программисты гибки в решениях, которые будут стоять перед вами и решать его . просто с небольшим поиском вы найдете IETab, которые поддерживают activex во всех браузерах , так что activex не является большим злоупотреблением, потому что проблема требует использования activex

Richard Deeming

IETab поддерживает ActiveX не во всех браузерах. Вместо этого он открывает ваш сайт в окне Internet Explorer в окне браузера, который пользователь хочет использовать.

Пользователь должен использовать Windows. Пользователь должен установить плагин IETab. Пользователь должен разрешить вашему сайту загружать, устанавливать и создавать сценарии элементов управления ActiveX, не помеченных как "безопасные для сценариев".

Если ваш код работает на частном сайте интрасети, это может сойти вам с рук. Если он доступен в общедоступном Интернете, никто не будет следовать этим шагам, чтобы заставить ваш сайт работать.

1 Ответов

Рейтинг:
2

Sergey Alexandrovich Kryukov

Пожалуйста, смотрите мой комментарий к этому вопросу.

Вот мое предложение: даже не думайте делать что-то подобное. Вместо этого у вас есть несколько цивилизованных вариантов.

Если данные появляются на стороне клиента, используйте JavaScript для создания некоторого контента для печати; пусть пользователь печатает его обычным способом.

Если данные появились на стороне сервера, создайте веб-страницу из данных, используя обычный ASP.NET методы, включая прямую генерацию HTTP-ответа. Вы можете перейти на созданную страницу, если хотите. Пусть пользователь распечатает страницу обычным способом.

При желании в обоих случаях можно создать кнопку или другой элемент, на который будет нажимать пользователь. Вы можете обрабатывать этот щелчок как на стороне клиента, так и на стороне сервера (см. выше). По желанию вы можете позвонить window.print(), для печати окна с помощью JavaScript. Однако это действие кажется мне излишним, потому что оно покажет точно такой же диалог печати и выполнит обычную печать; то, что пользователь мог бы сделать без вашей помощи. Вы можете сделать это, если считаете, что ваш пользователь не является хорошим пользователем браузера.

—СА