我的asp.net页面中有gridview。
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="true" CssClass="Gridview"
OnRowCommand="GridView1_RowCommand">
<Columns>
<asp:ButtonField Text="VIEW" ButtonType="link" CommandName="view" />
</Columns>
</asp:GridView>
我想在新窗口中打开新页面。
因为我使用了以下代码。(此代码无效! - 请检查是否有错误)
protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e)
{
if (e.CommandName.Equals("view"))
{
int index = Convert.ToInt32(e.CommandArgument);
GridViewRow gvrow = GridView1.Rows[index];
String id= gvrow.Cells[1].Text;
string url = "~/Mypage.aspx?myid=" + id;
Response.Write("<script>window.open( 'www.google.com' , '-blank' );</script>");
}
}
我在GRIDVIEW中运行时绑定数据 请记住这一点。
所以我不能使用超链接字段。
建议我使用gridview中的编码在新窗口中打开新页面的方法。
答案 0 :(得分:2)
晚了好,从来没有......我自己也遇到了同样的问题,所以我在这里发帖给其他程序员,可能会得到帮助。
首先我使用了linkbutton而不是buttonfield ...
<ItemTemplate>
<asp:LinkButton ID="viewLink" runat="server" CommandName="Select" >
<img class="pdficon" src="../Pictures/pdf_icon.png" />
</asp:LinkButton>
</ItemTemplate>
(在新窗口中有一张用于打开文档的图片,只需忽略它)
我的gridview有以下代码...(gridview documentGridView上的名称)
OnSelectedIndexChanged="openLinkClick"
DataKeyNames="docfolder"
在我的代码隐藏中,当我请求新的“默认”页面时,我将链接传递给新页面作为参数
protected void openLinkClick(object sender, EventArgs e)
{
//lots of code for constructing link, the important thing is SelectedDataKey
string docId = documentsGridView.SelectedDataKey.Value.ToString();
//passing link as parameter when opening a new default page with given
//dimensions for new window
ClientScript.RegisterStartupScript(this.Page.GetType(), "", "window.open('Document.aspx?param1=" + link + "','Graph','height=900,width=1100');", true);
//refresh page
Page_Load(this, null);
}
最后在Document.aspx的Page_Load中,我有以下代码来获取链接并打开我的文件,在你的原因中应该可以获取链接并进行重定向。
public partial class Document : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
//Open pdf in browser
Response.ContentType = "Application/pdf";
//get the parameter containing the adress for the file
string link = Request.QueryString["param1"];
//open the file
Response.WriteFile(link);
Response.End();
}
}
也许不是最狡猾的解决方案,但是在客户端而不是服务器端打开空白页的一种方法。
答案 1 :(得分:1)
从
替换您的代码Response.Write("<script>window.open( 'www.google.com' , '-blank' );</script>");
到
ClientScript.RegisterClientScriptBlock(this.GetType(), "Message", "window.open('www.google.com','_blank');", true);