Member 14636607 Ответов: 1

Вызов функции javascript из кода позади


Ниже приведена моя страница .aspx

<%@ Page Title="" Language="C#" MasterPageFile="~/Site1.Master" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="CHEWGB.Default" %>
<asp:Content ID="Content1" ContentPlaceHolderID="head" runat="server">
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server">
    <style type="text/css">
        body {
            background-color: none;
        }

        .control-label {
            color: black;
            font-weight: 600;
            font-size: 17px;
            text-align: center;
            font: bolder;
        }

        .submitBtn {
            padding: 10px 20px 11px !important;
            font-size: 21px !important;
            background-color: orange;
            font-weight: bold;
            text-shadow: 1px 1px #F36C8C;
            color: black;
            border-radius: 100px;
            -moz-border-radius: 100px;
            -webkit-border-radius: 100px;
            border: 1px solid #F36C8C;
            cursor: pointer;
            box-shadow: 0 1px 0 rgba(255, 255, 255, 0.5) inset;
            -moz-box-shadow: 0 1px 0 rgba(255, 255, 255, 0.5) inset;
            -webkit-box-shadow: 0 1px 0 rgba(255, 255, 255, 0.5) inset;
        }

            .submitBtn:hover {
                -webkit-transform: scale(1.3);
                transform: scale(1.3);
            }
    </style>

    <table style="background-color: none; border-collapse: separate; border-spacing: 20px; font: bold; font-size:larger">
        <tr>
            <td align="center">
                <asp:Label ID="Label1" runat="server" CssClass="control-label" Text="Enter Number : " BackColor="Aquamarine"></asp:Label>
            </td>
            <td align="center">
                <asp:TextBox ID="txtNumber" runat="server" autocomplete="off"></asp:TextBox>
            </td>
            <td align="center">
                <asp:Button ID="submtBtn" CssClass="submitBtn"  runat="server" Text="Submit" OnClick="submtBtn_Click" Style="float: right;" />
            </td>
        </tr>
    </table>

    <div id="dvProgressBar" style="float: left; visibility: hidden;">
        <img src="loading.gif" />
        Generating Pdf, please wait...
    </div>
  <br style="clear:both" />

    <link href = "Css/jquery-ui.css" rel = "stylesheet"/>
      <script src = "Scripts/jquery-1.10.2.js"></script>
      <script src = "Scripts/jquery-ui.js"></script>

      <script src = "Scripts/jquery.timepicker.min.js"></script>
      <script src = "Scripts/jquery.ui.timepicker.min.js"></script>
      <link href = "Css/jquery.timepicker.css" rel = "stylesheet"/>
      <link href = "Css/jquery.ui.timepicker.css" rel = "stylesheet"/>
    <script type="text/javascript">
      function ShowProgressBar() {
        document.getElementById('dvProgressBar').style.visibility = 'visible';
      }

      function HideProgressBar() {
        document.getElementById('dvProgressBar').style.visibility = "hidden";
        }

    </script>
</asp:Content>


Ниже приведен мой код позади функции

 protected void submtBtn_Click(object sender, EventArgs e)
        {
submtBtn.Text = "Please Wait...";

Page.ClientScript.RegisterStartupScript(this.GetType(), "showloadingIcon", "ShowProgressBar()", true);

            some codes to generate pdf using itextsharp

Page.ClientScript.RegisterStartupScript(this.GetType(), "hideloadingIcon", "HideProgressBar()", true);

 submtBtn.Text = "Submit";
        }



Проблема здесь заключается в том, что когда я изменяю текст submtBtn в функции code behind, он не работает, и вызов функции javascript для загрузки значка также не работает в функции code behind.

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

submtBtn.Text = "Please Wait...";

Page.ClientScript.RegisterStartupScript(this.GetType(), "showloadingIcon", "ShowProgressBar()", true);

            some codes to generate pdf using itextsharp

Page.ClientScript.RegisterStartupScript(this.GetType(), "hideloadingIcon", "HideProgressBar()", true);

F-ES Sitecore

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

1 Ответов

Рейтинг:
0

OriginalGriff

Клиентский код - что означает Javascript - не выполняется до тех пор, пока страница не будет завершена, и отправляется в браузер в виде HTML для рендеринга. Регистрация скрипта просто добавляет HTML (и JS) к данным страницы, включая их в HTML, и ничего больше. Невозможно "вызвать" функцию JS на клиенте и получить ответ или даже знать, что она будет выполнена, если только эта функция не вызовет обратный вызов на сервер, что фактически означает загрузку новой страницы и отправку HTML на новую страницу. (Даже Ajax работает так же, хотя и будет меньше кусков HTML, чем целая страница.)