0

グリッドビュー内にボタンがあります。このボタンを使用して新しいウィンドウを開こうとしていますが、エラー メッセージが表示されます。

エラー: 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 の外で同じコードを使用すると、問題なく動作します。

私は何を間違っていますか?

ありがとう

4

2 に答える 2

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
于 2013-10-29T08:11:56.320 に答える