zoukankan      html  css  js  c++  java
  • ScriptManager.RegisterStartupScript用法详解

    如果页面中不用Ajax,cs中运行某段js代码方式可以是:
    Page.ClientScript.RegisterStartupScript(Page.GetType(), "", "<script>window.open('default2.aspx')</script>");
    如果页面中使用了Ajax ,则上述代码即使执行也无效果。对这种情况我们通常采用:
    ScriptManager.RegisterStartupScript(this.Button1, this.GetType(), "alertScript", "window.open('default2.aspx');", true);
    其中第一个参数为要注册脚本的控件ID,试了一下,只要是本页面的就行。
    第二个参数为注册脚本控件类型,是控件还是this的GetType()都可以,typeOf(string)也没问题.
    第三个脚本函数的名字,随便起。
    第四个是脚本内容。
    第五个是标明是否再添加脚本标签,如果第四个参数里包含了<script></script>标签,此处则为false,否则为true。

    注意:aspx代码是这样的

    复制代码
    <div>
        
    <asp:UpdatePanel ID="UpdatePanel1" runat="server">
            
    <ContentTemplate>
                
    <asp:TextBox runat="server" ID="TextBox2" >
                
    </asp:TextBox>
                
    <asp:Button runat="server" Text="Button" ID="Button1" onClick="Button1_Click" />
            
    </ContentTemplate>
            
    <Triggers>
                
    <asp:PostBackTrigger ControlID="Button1" />
            
    </Triggers>
         
    </asp:UpdatePanel>
    </div>
    复制代码

    我在Button1_Click的事件里注册脚本,一定要加红色的部分,否则总是提示不能parse什么东西!

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

    以上的内容来自别人的文章,现在说一下自己的使用体会:在按钮Button1的onClick事件中注册脚本可以这样写:ScriptManager.RegisterStartupScript(this.UpdatePanel1, Page.GetType(), System.DateTime.Now.Ticks.ToString(), "window.open('default2.aspx');", true);页面中的红色部分也可以去掉了。现在对第三个参数“脚本函数的名称”要特别说明一下,

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

    实例:
     protected void OnEditing(object sender, GridViewEditEventArgs e)
        {
            int id = Int32.Parse(GridView1.Rows[e.NewEditIndex].Cells[1].Text);///得到你要编辑文章的id
                                                                           
            String Url = "AddArticle.aspx?ID=" + id.ToString();////AddArticle.aspx是你要找到编辑的页面
            ScriptManager.RegisterStartupScript(UpdatePanel1, this.GetType(), "redirectMe", "location.href='" + Url + "';", true);

    ----------------------------------------

    需要注意的是第4个参数是js脚本内容,每一条语句结束加分号

  • 相关阅读:
    [转]SVN服务器搭建和使用(二)
    [转]SVN服务器搭建和使用(一)
    BZOJ 2049 Sdoi2008 Cave 洞穴勘测
    BZOJ 1589 Usaco2008 Dec Trick or Treat on the Farm 采集糖果
    BZOJ 2796 POI2012 Fibonacci Representation
    BZOJ 2115 Wc2011 Xor
    BZOJ 3105 CQOI2013 新Nim游戏
    BZOJ 2460 Beijing2011 元素
    BZOJ 3687 简单题
    BZOJ 1068 SCOI2008 压缩
  • 原文地址:https://www.cnblogs.com/YoungPop-Chen/p/3262569.html
Copyright © 2011-2022 走看看