在gridview buttonfield的新窗口中打开新页面

时间:2012-12-07 12:15:37

标签: asp.net

我的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中的编码在新窗口中打开新页面的方法。

2 个答案:

答案 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);