zoukankan      html  css  js  c++  java
  • .net 后台插入脚本后,页面样式改变解决方案

    需求:点击“打印”按钮弹出新窗体。

    1. 本人不熟悉.net 客户端脚本没有写出来,故退而求其次,使用后台代码实现。

    2. Response.Redirect("");重定向不符合新窗口显示要求。PASS;

    3. 使用Response.Write(""); 会发现在弹出新窗口后  原页面样式整体改变。PASS;

    4. 使用Page.ClientScript.RegisterStartupScript("");  最终实现需求效果。

    aspx页面
    <Columns>
                                <asp:BoundField HeaderText="ID" Visible="False" />
                                <asp:TemplateField HeaderText="序号">
                                    <ItemTemplate><%# this.GridView1.PageIndex * this.GridView1.PageSize + this.GridView1.Rows.Count + 1%> 
                                    </ItemTemplate>
                                </asp:TemplateField> 
                                <asp:BoundField HeaderText="障碍编号" DataField="Field11146" />
                                <asp:BoundField HeaderText="发生时间" DataField="field14951" />
                                <asp:BoundField HeaderText="结束时间" DataField="field15072" />
                                <asp:BoundField HeaderText="系统名称" DataField="Field14995" />
                                <asp:BoundField HeaderText="障碍概述" DataField="Field11149" /> 
                                <asp:BoundField HeaderText="所属路局" DataField="field11166" /> 
                                <asp:BoundField HeaderText="障碍原因" DataField="field14957" />  
                                                          <asp:TemplateField HeaderText="打印">
                                    <ItemTemplate>
                                        <asp:LinkButton ID="LinkButton1" runat="server" CausesValidation="False" CommandArgument='<%# Bind("ID") %>'
                        onClick="LinkButton1_Click" Text="打印"></asp:LinkButton>
                                    </ItemTemplate>
                                    <ItemStyle Width="40px" />
                                </asp:TemplateField>
    aspx.cs代码
    protected void LinkButton1_Click(object sender, EventArgs e)
        {
            string dID = ((LinkButton)sender).CommandArgument.ToString();
            //Response.Redirect("HistoryObstacle.aspx?id=" + dID);
            string addr = "HistoryObstacle.aspx?id=" + dID;
            //Response.Write("<script language='javascript'>window.open('" + addr + "');</script>");
            Page.ClientScript.RegisterStartupScript(this.GetType(), "", "<script language='javascript'>window.open('" + addr + "');</script>");
        }

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

    沙场秋点兵:

    ClientScript.RegisterStartupScript方法有3个重载:

    方法描述
    1:RegisterStartupScript(Page, String, String) 
    向 ScriptManager 控件注册一个启动脚本块并将该脚本块添加到页面中。需要向第三个参数添加<script></script>脚本标签。
    第一个参数为页面Page。
    第二个脚本函数的名字,随便起。
    第三个是<script></script>形式的脚本内容。
    2:RegisterStartupScript(Control, Type, String, String, Boolean) 
    使用 ScriptManager 控件为 UpdatePanel 中的某个控件注册一个启动脚本块,并将该脚本块添加到页面中。
    第一个参数为要注册脚本的控件ID,试了一下,只要是本页面的就行。
    第二个参数为注册脚本控件类型,是控件还是this的GetType()都可以,typeOf(string)也没问题.
    第三个脚本函数的名字,随便起。
    第四个是脚本内容。
    第五个是标明是否再添加脚本标签,如果第四个参数里包含了<script></script>标签,此处则为false,否则为true。
    3:RegisterStartupScript(Page, Type, String, String, Boolean) 
    为每个异步回发向 ScriptManager 控件注册一个启动脚本块,并将该脚本块添加到页面中。页面如果有用到Ajax需要用到这种。
    第一个参数为页面Page。
    第二个参数为注册脚本控件类型,是控件还是this的GetType()都可以,typeOf(string)也没问题.
    第三个脚本函数的名字,随便起。
    第四个是脚本内容。
    第五个是标明是否再添加脚本标签,如果第四个参数里包含了<script></script>标签,此处则为false,否则为true。

    RegisterStartupScript和RegisterClientScriptBlock的区别:

    View Code
    Page.Response.Write("<script>var response;</script>");    
    
    Page.RegisterStartupScript("RegisterStartupScript","<script>var RegisterStartupScript;</script>");    
    
    Page.RegisterClientScriptBlock("RegisterClientScriptBlock","<script>var RegisterClientScriptBlock;</script>");  
     
    Response.Write输出后的位置在源文件的第一行. 
    
    RegisterClientScriptBlock输出后的位置会在<form>的下一行.(在asp.net自带的脚本和一些隐藏域之下). 
    
    RegisterStartupScript输出后的位置会在</form>的上一行.

    综上,如何在后台执行一段前台脚本. 给div 的innerHTML赋值.如下:

    View Code
    在后台执行一段前台脚本. 给div 的innerHTML赋值
    
    Page.ClientScript.RegisterStartupScript(typeof(string),"",
    "<script type='text/javascript'>
    document.getElementByIdx('divImportdata').innerHTML='<img src="http://images.cnblogs.com/disconfirm.gif"';
    </script>");
  • 相关阅读:
    【转】数据库分页Java实现
    【转】ibatis的简介与初步搭建应用
    response.setContentType()的作用及参数
    【转】mysql数据库中实现内连接、左连接、右连接
    【转】JAVA的StringBuffer类
    【转】Java学习之Iterator(迭代器)的一般用法 (转)
    函数装饰器
    闭包函数
    函数(2)
    函数(1)
  • 原文地址:https://www.cnblogs.com/surge/p/2719948.html
Copyright © 2011-2022 走看看