Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript NET打印iFrame_Javascript_C#_Asp.net - Fatal编程技术网

Javascript NET打印iFrame

Javascript NET打印iFrame,javascript,c#,asp.net,Javascript,C#,Asp.net,我有一个ASP.Net应用程序,单击按钮时打印。应用程序使用iFrame进行打印 这是我的标记: <iframe id="ifPrint" clientidmode="static" runat="server" style="width:100%;height:1px;" /> 该按钮位于名为Search.aspx的页面中。单击“打印”按钮时会发生以下情况: ifPrint.Attributes["src"] = "~/Pages/PrintWeightTicket.aspx?w

我有一个ASP.Net应用程序,单击按钮时打印。应用程序使用iFrame进行打印

这是我的标记:

<iframe id="ifPrint" clientidmode="static" runat="server" style="width:100%;height:1px;" />
该按钮位于名为
Search.aspx
的页面中。单击“打印”按钮时会发生以下情况:

ifPrint.Attributes["src"] = "~/Pages/PrintWeightTicket.aspx?wt=" + sWeightTicket;
ScriptManager.RegisterStartupScript(this, this.GetType(), "PrintWeight", "PrintReport();", true);
如您所见,该按钮用于将源代码设置为
PrintWeightTicket.aspx
页面,并打印该页面的内容。但出于某种原因,当我点击“打印”时,它会打印当前页面。我在我的C#代码中设置了一个断点,检查了
ifPrint.Src
的值,并将其正确设置到
printwortticket
页面。但是由于某种原因,当Javascript中的函数被调用时,src就不会生效

我尝试过的事情:

  • 我尝试将iframe的源设置为这样:
    ifprint.Src=“~/Pages/printwortticket.aspx?wt=“+sWeightTicket
    那没有任何作用
  • 我添加了以下内容:
    Response.Redirect(“~/Pages/printwortticket.aspx?wt=“+sWeightTicket,false”)
    ScriptManager.RegisterStartupScript
    行的正下方。如果我那样做,它会起作用的!但是,我的老板告诉我,我们不希望页面重定向到打印页面。我们希望页面停留在搜索页面,打印对话框弹出并打印重定向页面。所以我不得不说出来,现在它不起作用了
  • 我在上的一篇帖子中看到了,因此我可以尝试从
    Page\u PreRender()
    函数调用
    ScriptManager.RegisterStartupScript
    函数。当我这样做的时候,我会在打开主页后立即弹出打印窗口。我不想那样。这实际上甚至不起作用,因为我需要输入重量票ID才能打印任何内容 有人知道为什么没有设置
    iFrame
    的src吗

    多谢各位

    附言:
    标记中的
    ClientIDMode=“Static”
    行由于某些原因需要保留。如果有人认为这就是为什么这不起作用的原因,我会研究如何解决这个问题

    编辑1:
    经过一点测试,我发现我当前的代码在Chrome上运行得非常好。但它在IE中不起作用

    编辑2:

    我的Javascript文件名为
    JS_Scripts.JS
    。我有一个
    AJS.JS
    和一个
    AJS\u fx.JS
    。当我打开Developer tools并运行HTTP Watch(网络选项卡下的绿色播放按钮,不确定它的名称)时,我注意到我的所有三个javascript文件和一个
    WebResource.axd?…
    文件都得到了
    (中止)
    的结果。尽管如此,它在Chrome中确实有一个
    200
    的结果。IE由于某种原因没有完成脚本的执行。

    在一周多的时间里,我在键盘上敲了敲键盘,我屈服了,去找我的老板(他聪明得可笑,我有时认为他就是Jon Skeet,在这里使用了假身份)

    对于有此问题的任何人:

    这就是发生这种情况的原因:

    ifPrint.Attributes["src"] = "~/Pages/PrintWeightTicket.aspx?wt=" + sWeightTicket;
    
    此行正确设置了iFrame的源属性。我使iFrame可见,并看到iFrame实际上加载了源代码中提到的链接

    但是,下一行是为什么会发生这个问题

    ScriptManager.RegisterStartupScript(this, this.GetType(), "PrintWeight", "PrintReport();", true);
    
    这一行调用Javascript中名为
    PrintReport()
    的函数。此函数执行
    ifPrint.Focus()
    ifPrint.Print()
    。但问题是,在调用这两行时,iFrame没有完成加载。因此,iFrame中没有可打印的内容。因此,iFrame一直在打印它所在的页面

    以下是修复方法:

    不要使用
    ScriptManager.RegisterStartupScript()
    调用
    PrintReport()
    函数,而是使用以下命令:

    ifPrint.Attributs("onLoad") = "PrintReport()";
    
    这将确保
    ifPrint.Print()
    函数实际打印iFrame


    谢谢。

    在一周多的时间里,我一直在用键盘敲我的头,后来我屈服了,去找了我的老板(他聪明得可笑,我有时认为他就是乔恩·斯基特,在这里用了一个假身份)

    对于有此问题的任何人:

    这就是发生这种情况的原因:

    ifPrint.Attributes["src"] = "~/Pages/PrintWeightTicket.aspx?wt=" + sWeightTicket;
    
    此行正确设置了iFrame的源属性。我使iFrame可见,并看到iFrame实际上加载了源代码中提到的链接

    但是,下一行是为什么会发生这个问题

    ScriptManager.RegisterStartupScript(this, this.GetType(), "PrintWeight", "PrintReport();", true);
    
    这一行调用Javascript中名为
    PrintReport()
    的函数。此函数执行
    ifPrint.Focus()
    ifPrint.Print()
    。但问题是,在调用这两行时,iFrame没有完成加载。因此,iFrame中没有可打印的内容。因此,iFrame一直在打印它所在的页面

    以下是修复方法:

    不要使用
    ScriptManager.RegisterStartupScript()
    调用
    PrintReport()
    函数,而是使用以下命令:

    ifPrint.Attributs("onLoad") = "PrintReport()";
    
    这将确保
    ifPrint.Print()
    函数实际打印iFrame

    多谢各位