zoukankan      html  css  js  c++  java
  • JavaScript 之 ScriptManager.RegisterStartupScript的应用

          如果页面中不用Ajax,cs中运行某段js代码方式可以是:

          Page.ClientScript.RegisterStartupScript(Page.GetType(), "", "<script>window.open('RefrigeratoryInfoList.aspx')</script>");

          如果页面中使用了Ajax ,则上述代码即使执行也无效果。对这种情况我们通常采用:

          ScriptManager.RegisterStartupScript(this, typeof(string), "", "alert('成功!');javascript:location='RefrigeratoryInfoList.aspx';", true);

          其中第一个参数为要注册脚本的控件ID,试了一下,只要是本页面的就行。 第二个参数为注册脚本控件类型,是控件还是this的GetType()都可以,typeOf(string)也没问题. 第三个脚本函数的名字,随便起。 第四个是脚本内容。 第五个是标明是否再添加脚本标签,如果第四个参数里包含了<script></script>标签,此处则为false,否则为true。

    注意:aspx代码是这样的

    <asp:ScriptManager ID="ScriptManager1" runat="server">
        </asp:ScriptManager>
        <asp:UpdatePanel ID="UpdatePanel1" runat="server">
            <ContentTemplate>
                <table id="TableView" class="crop_table">
                    <tr>
                        <td class="crop_table_lable">
                            日期<span style="color: #F00;">*</span>
                        </td>
                        <td>
                            <asp:TextBox ID="txtDate" runat="server" Width="200px" CssClass="crop_table_text"
                                onclick="WdatePicker({el:'txtDate',lang:'zh-cn',readOnly:true,dateFmt:'yyyy-MM-dd'})"></asp:TextBox>
                            <asp:RequiredFieldValidator ID="RFV1" runat="server" ControlToValidate="txtDate"
                                ErrorMessage="必填项"></asp:RequiredFieldValidator>
                        </td>
                        <td class="crop_table_lable">
                            产品名称<span style="color: #F00;">*</span>
                        </td>
                        <td>
                            <asp:DropDownList ID="ddlProductionName" runat="server" DataTextField="CHP_Name"
                                DataValueField="CHP_ID" OnSelectedIndexChanged="ddlProductionName_SelectedIndexChanged"
                                AutoPostBack="True">
                            </asp:DropDownList>
                        </td>
                    </tr>
                    <tr>
                        <td height="35" colspan="4" align="center">
                            <asp:Button ID="btnAdd" runat="server" Text="·提 交·" CssClass="crop_table_btn" onmouseover="this.className='crop_table_btn_mouseover'"
                                onmouseout="this.className='crop_table_btn'" OnClick="btnAdd_Click" />
                            <input name="Submit" type="reset" value="·重 填·" class="crop_table_btn ml50" value="取消修改"
                                onmouseover="this.className='crop_table_btn_mouseover ml50'" onmouseout="this.className='crop_table_btn ml50'" />
                        </td>
                    </tr>
                </table>
            </ContentTemplate>
        </asp:UpdatePanel>
    View Code

          另外,js无法干涉cs代码。所以一旦脚本注册成功,js和cs代码会互不相干的各自运行。

    如果在onClick事件中,使用该方法注册了两个脚本。如果注册的两个脚本函数的名称相同,则第二个脚本函数就不会执行。因为脚本管理器使用此字符串来分析是否是一个已经加载过的脚本,如果加载过,将不会再次渲染。所以第二个就不会加载执行了。

          ScriptManager和ClientScriptManager的命名空间均是System.Web.UI。

          ClientScript获取用于管理脚本、注册脚本和向页面添加脚本的ClientScriptManager对象,用于管理普通的Script。ClientScript是ClientScriptManager的对象,ClientScriptManager是类。

          ScriptManager是用于管理AJAX脚本库和脚本文件。

         ScriptManager适用在特殊的场合,其实可以通过寻找控件的parent,判断是否有updatepanel,如果有就用ScriptManager;没有的话当然用ClientScript,避免每次postback操作时控件都要进行资源文件的注册。也就是说 是否兼容ajax的问题,ScriptManager兼容于ajax,在ajax updatepanel中使用ClientScript是无效的。ScriptManager.RegisterStartupScript 适用于无刷新后台调用JS。 ClientScript.RegisterStartupScript  普通的后台调用前端的JS更适用。

  • 相关阅读:
    TreeSet——实现Comparable接口并重写CompareTo()方法
    HashMap的四种遍历方式
    HashMap—— values() remove方法 containsKey()方法 containsValue()方法
    HashSet——add remove contains方法底层代码分析(hashCode equals 方法的重写)
    CSS——font使用方法
    css——选择器
    Eclipse怎么改变工程保存路径
    jsp其实是一个java类
    HTML——b i del a p img h1 h2 h3 h4 h5 h6 hr ol ul 标签的使用方法详解
    ACM算法练习-——ZJU1164-Software CRC
  • 原文地址:https://www.cnblogs.com/xinaixia/p/3929692.html
Copyright © 2011-2022 走看看