2013-10-28 141 views
0

我有一个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外

我做错了什么?

谢谢

回答

1

你不应该这样写Response.Write脚本。使用脚本管理器并从那里注册脚本。

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> 
+0

当我使用HTML链接,你所建议,新窗口中打开好吗值,但主窗口在空白处显示顶部显示'[object]'。此外,我必须将值传递到新窗口,我不知道如何做到这一点的JavaScript代码。 – Selrac

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