2013-10-28 195 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