saimanisha Ответов: 1

Как написать код для кнопки, которая должна срабатывать одновременно при обоих событиях onclick и onclientclick одним щелчком мыши


я пишу код для события button onclient с js для печати веб-страницы и события onclick для создания pdf-файла и его загрузки ..и то, и другое должно быть сделано в одном действии..
но когда я отменяю печать, которую я onclient click event, то oncick event срабатывает .

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

 <script type="text/javascript">
         function PrintPage() 
         {
             window.print();
            return true;
         }
</script>

<asp:Button ID="Button3" runat="server"  Text="PTPDF" UseSubmitBehavior="false" OnClick="Button3_Click1"  OnClientClick ="javascript:PrintPage();"    />
       </div>


protected void Button3_Click1(object sender, EventArgs e)
        {//here is the code for pdf generation,
this code must get fired automatically after onclient click event without users action}

Thomas Nielsen - getCore

Ну у вас не может быть ни одного действия как на сервере так и на клиенте :)
клиент визуализирует javascript в вашем браузере, а сервер (runat='server') экземпляр элементов управления происходит между запросом/сообщением и ответом

F-ES Sitecore

Любая попытка автоматизировать или контролировать печать на стороне клиента обречена на провал, она просто не поддерживается.

saimanisha

Итак, каково же решение, если мы хотим предоставить клиенту возможность печати?.

F-ES Sitecore

У клиента это уже есть...функция печати их браузера. Если они хотят что-то напечатать, то могут.

saimanisha

мое требование заключается в том, что я написал функцию для печати, которая является клиентской стороной и генерацией pdf с опцией загрузки на стороне сервера ..вот почему я использовал onlick и onclientclick events..is есть возможность работать с обоими событиями одновременно, одно за другим, одним щелчком мыши .

F-ES Sitecore

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

saimanisha

хорошо, тогда как мне написать код для запуска загрузки файла после печати текущей страницы ..

F-ES Sitecore

Это ваша проблема, вы не знаете, была ли страница напечатана. Если вы настаиваете на том, чтобы использовать это как требование, вы никогда не добьетесь успеха, все, что вы можете сделать, это window.print (), и после этого все зависит от пользователя.

Если вы хотите спровоцировать загрузку перед командой window. print, то на странице есть такая форма, как

< form id=" dlForm " action=" yourdownloadpage.aspx "target= "_blank">
// любые данные, которые вы хотите отправить в форму, будут отправлены в скрытые поля здесь
< input type=hidden name=od value= "123" />
в <тип входного=передать значение=скачать стиль="дисплей:ни один;"/&ГТ;
< / форма>



Затем вы отправляете эту форму в своем JS-коде

$("#dlForm"). отправить();

Альтернативный Хак состоит в том, чтобы иметь iframe на странице с шириной и высотой 1 и установить значение display:none, и вы устанавливаете src iframe на свою страницу загрузки.

1 Ответов

Рейтинг:
0

Karthik_Mahalingam

OnClientClick событие будет запущено первым, оно примет логическое значение ( true по умолчанию )
если значение истинно, onclick событие будет уволено, иначе оно не произойдет.
так и должно быть

OnClientClick =" return PrintPage();" 

однако window.print() метод не будет возвращать никакого значения, поэтому трудно понять, нажата ли кнопка печати или отмены.
проверьте это, это может вам помочь Как захватить событие щелчка в меню печати по умолчанию, вызываемом Javascript window. print ()? - переполнение стека[^]


saimanisha

он работает, когда я отменяю окно печати..затем событие onclick просыпается .но он должен работать, когда я не отменяю окно печати

Karthik_Mahalingam

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

saimanisha

я не понял, что там в этой ссылке..мне нужно сделать обе вещи одновременно cleint side code и server side code должны работать, но его не запускают на серверном коде, как я могу сделать это возможным.если у вас есть какие-то идеи по-другому, то скажите мне.