gridview中的按钮打开新窗口

时间:2013-10-28 22:33:38

标签: asp.net vb.net gridview

我在gridview中有一个按钮。我正在尝试使用此按钮打开一个新窗口,但我收到一条错误消息。

错误:Sys.WebForms.PageRequestManagerParserErrorException:无法解析从服务器收到的消息。此错误的常见原因是通过调用Response.Write(),响应过滤器,HttpModules或服务器跟踪来修改响应。 详细信息:在'window.open('。

)附近解析时出错

ASP代码

<asp:TemplateField HeaderText="" Visible="true">
    <ItemTemplate>
            <asp:ImageButton ID="ImageButton1" runat="server" ImageUrl="~/Images/picture.jpg" 
            Height="20px" Width="20px" 
            CommandName="OpenGroupTrend"/>
    </ItemTemplate>
</asp:TemplateField>

VB代码

Protected Sub GV_SL_RowCommand(ByVal sender As Object, _
ByVal e As System.Web.UI.WebControls.GridViewCommandEventArgs)
    If (e.CommandName = "OpenGroupTrend") Then
        Dim GroupTrendLink = "http://NewPage.aspx"
        Response.Write("<script>")
        Response.Write("window.open('" & GroupTrendLink & "','_blank')")
        Response.Write("</script>")
    End If
End Sub

如果我在GridView外部使用相同的代码,它可以正常工作。

我做错了什么?

由于

2 个答案:

答案 0 :(得分:1)

你不应该像这样响应。写脚本。使用scriptmanager并从那里注册脚本。

http://msdn.microsoft.com/en-us/library/system.web.ui.scriptmanager.registerclientscriptblock.aspx

更好的是,放弃完全回复并使用HTML链接。

<a href="javascript: window.open('[url]','_blank')">
    <img src="Images/picture.jpg" />
<a> 

答案 1 :(得分:0)

我已经设法用scriptmanager解决了这个问题。感谢nickles80的提示。如果有人帮助,请参阅下面的代码。我还添加了将值传输到新窗口的代码。

If (e.CommandName = "OpenGroupTrend") Then

 Dim G = e.CommandArgument.ToString
 Dim D = DateInt.Value
 Dim GroupTrendLink = "http://NewPage.aspx?D=" & D & "&G=" & G

 ScriptManager.RegisterStartupScript(Me, Me.GetType, "key", "open('" + GroupTrendLink + "');", True)

End If

在'Newpage.aspx'中,我使用以下代码来捕获值

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
    If Not IsPostBack Then
        Dim DateTrans As Integer
        DateTrans = Request.QueryString("D")
        Label1.Text = DateTrans.ToString

        Dim GroupTrans As Integer
        GroupTrans = Request.QueryString("G")
        Label2.Text = GroupTrans.ToString
    End If
End Sub