在新的浏览器选项卡

时间:2016-05-11 20:42:06

标签: javascript asp.net vb.net

我有一个带有打印按钮的表单,当单击时,会打开一个单独的浏览器选项卡,显示Sql Server Reporting Services报告。我也将两个变量传递给这个单独的报告页面。

Protected Sub btnPrint_Click(sender As Object, e As EventArgs) Handles   btnPrint.Click

    Dim VID As Integer
    Dim SID As Integer
    Dim QueryString As String
    Dim dc As New VehicleDataContext(db.ConnectionString)

    Dim oReportPath = From rpt In dc.ReportLists _
                      Where rpt.ReportName = "Vehicle Service Record" _
                      Select rpt.ReportPath

    Dim sURL As String = "ReportViewer.aspx"
    Session.Add("ReportPath", oReportPath.First)

    VID = CInt(Session("VId"))
    SID = CInt(Session("SID"))

    QueryString = "ReportViewer.aspx?ID=" & VID
    QueryString = QueryString & "&SID=" & SID

    Response.Redirect(QueryString)

报告打开没有问题,但我遇到的困难是使用JavaScript。

<script type = "text/javascript">

function SetTarget() {

    document.forms[0].target = "_blank";
}

</script>

<script type = "text/javascript">

 var ResetTarget = function () {

   document.forms[0].target = "_self";

        }
</script>

在此按钮的OnClientClick事件中,我添加了代码以强制在新选项卡中打开报表。第二个JavaScript函数是将应用程序重置为默认行为。我在&#34;关闭&#34;下面调用了这段代码。按钮,但我意识到单击网页上的其他按钮或链接将继续在新的浏览器选项卡中打开我的表单,这是我不想要的。

一旦打印按钮代码成功完成,是否有办法调用此ResetTarget脚本,以便此表单上的其他页面事件不会继续打开新窗口?

提前致谢。

1 个答案:

答案 0 :(得分:0)

function SetTarget() {

    document.forms[0].target = "_blank";
    setTimeout(function(){document.forms[0].target = "_self";},300);
}

可以接受吗?