gpt4 book ai didi

c# - 如何在gridview的rowcommand事件中在新标签中打开一个页面?

转载 作者:搜寻专家 更新时间:2023-11-01 04:47:26 24 4
gpt4 key购买 nike

我有以下代码:

protected void gv_inbox_RowCommand(object sender, GridViewCommandEventArgs e)
{
int index = Convert.ToInt32(e.CommandArgument);

if (e.CommandName == "sign")
{
Session["TransYear"] = int.Parse(((HiddenField)gv_inbox.Rows[index].Cells[1].FindControl("HDN_TransYear")).Value);
Session["MailNumber"] = int.Parse(((HiddenField)gv_inbox.Rows[index].Cells[1].FindControl("HDN_MailNumber")).Value);
Response.Redirect("Signature.aspx", false);
//Response.Write("<script>");
//Response.Write("window.open('Signature.aspx','_blank')");
//Response.Write("</script>");
}
}

我想在新标签页或窗口中打开页面。注释代码会这样做,但是当 refresh 原始页面导致错误时。如何在行命令事件中以正确的方式在新窗口或选项卡中打开 Signature.aspx我的 GridView 。

最佳答案

您要做的是使用 ScriptManager 进行 JavaScript 调用。

您定义的 JavaScript 片段有效,但是,您需要 ScriptManager 来为您执行它。

String js = "window.open('Signature.aspx', '_blank');";
ScriptManager.RegisterClientScriptBlock(this, this.GetType(), "Open Signature.aspx", js, true);

使用 Response.Write 的问题在于,在 PostBack 期间,浏览器将 执行脚本标记。另一方面,当使用 ScriptManager.RegisterClientScriptBlock 时,ASP.NET ScriptManager 将自动执行代码。

更新 - 2013/02/14

Vladislav's answer 中的建议,使用 ClientScriptScriptManager;不同之处在于 ClientScript 仅适用于同步 回发(无 asp:UpdatePanel),而 ScriptManager 则适用于异步回发(使用 asp:UpdatePanel)。

此外,根据作者在下面的评论 - 将 asp:GridView 包含在 asp:UpdatePanel 中将消除确认刷新的浏览器消息。在同步回发后刷新页面时(无 asp:UpdatePanel),浏览器将重新发送最后一条命令,导致服务器再次执行相同的过程。

最后,当 asp:UpdatePanelScriptManager.RegisterClientScriptBlock 结合使用时,确保将第一个和第二个参数更新为 asp:UpdatePanel 对象。

ScriptManager.RegisterClientScriptBlock(updatePanel1, updatePanel1.GetType(), "Open Signature.aspx", js, true);

关于c# - 如何在gridview的rowcommand事件中在新标签中打开一个页面?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14798264/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com