linkbutton打开一个新页面,我的gridview里面有几列是linkbutton,放在updatepanel里面

时间:2022-05-07 17:09:39
我现在打开新页面,用方法:
1. Response.Write("<script language = 'JavaScript'> window.open('url','_blank') </script>
这样子程序会跳入错误,说解析("<script language = '时发生错误。
2.ScriptManager.RegisterClientScriptBlock(this, this.GetType(), "", "<script>window.open(‘URL’)</script>", true);这样子说脚本有错误,还是不能跳转。
反正我是有点绝望了,希望哪位高手给我来解决一下啊。分数不多,恳请大神指导!
我再补充一下这个问题,是一个在母板页上的contentplaceholder里面包含了一个updatepanel,这个updatepanel内有一个gridview,gridview里面包含三列的linkbutton,点击linkbutton要触发一个事件,对于事件处理完毕后,最后一件事就是打开一个新页面,然后用了好多方法都打不开,为什么啊?
protected void Gridview1_rowcommand(object sender, GridviewcommandEventArgs e )
{
       ***;
     if(e.commandname =="**click")
     {      ******;
           page,clientscript.registerstartupscript(page.getTypt(),"info","<script> window.open("login.aspx");</script>");
     }
     else if(e.commandname =="**click")
    {    ......
    }
}

18 个解决方案

#1


试试ScriptManager.RegisterStartupScript

在ms ajax存在的情况下经常会有些莫名其妙的js错误,很无语,所以我从来不用

#2


response.write()
这种写法应该没错,是不是浏览器设置问题?

#3


ScriptManager.RegisterClientScriptBlock(UpdatePanel1, this.GetType(), "click", "window.open("login.aspx");", true);  

#4


ScriptManager.RegisterStartupScript
用这个注册脚本是可以的,这个是专门对有Ajax的页面的脚本注册,顺带说一下 Response.Write("<script language = 'JavaScript'> window.open('url','_blank') </script>
这个从语法上来讲没错误,但是输出到页面就会有错误了,language后面好像是不支持单引号的

#5


#6


引用 2 楼 hookyzlr 的回复:
response.write()
这种写法应该没错,是不是浏览器设置问题?
2楼的,没用过Ajax?Ajax页面是不支持Response.Write()这个方法的,谢谢

#7


ScriptManager.RegisterStartupScript
就可以解决。

#8


是不支持这个方法来注册脚本!你要输出其他的还是没问题

#9


问题在于你的updatepanel,在updatepanel中用js跳转会报异常的,你可以测试下,你去掉updatepanel,肯定能跳转

#10


这个也有错啊,那应该怎么避免呢?现在是这样:我在这个updatepanel里面放置的gridview,点击了那个linkbutton之后,如果response.redirect("***.aspx"),查看了详细数据,再点返回本页面,这个gridview里面的数据就都没有了,怎么样保存这个页面,让倒回来之后的查询结果还在呢?只要我能解决这个问题,或者是通过一定的途径绕过这个问题,我就谢谢啦。

#11


ScriptManager.RegisterStartupScript你直接使用这个去注册脚本就是了,这个对象是可以的,你都response.redirect到另外一个页面去了,数据是肯定保存不了的了,除非你存在session里面,在每一次进页面里面的时候就判断一下session有没有数据,有的话就帮到gridview上去,我只能想到这个方法,不过比较耗费服务器资源

#12


或者将你的查询关键的条件穿到另外一个页面去,然后再穿回来,不过用起来比较蛋疼 linkbutton打开一个新页面,我的gridview里面有几列是linkbutton,放在updatepanel里面

#13



 <asp:TemplateField HeaderText="操作" ItemStyle-CssClass="gridview_item" HeaderStyle-CssClass="gridview__headerItem">
                    <ItemTemplate>
                        <a id="aedit" runat="server">编辑</a>&nbsp;
                    </ItemTemplate>
                </asp:TemplateField>
后台中
    protected void grv_RowDataBound(object sender, GridViewRowEventArgs e)
    {
        GridViewRow row = e.Row;
        if (row.RowType == DataControlRowType.DataRow)
        {
            DevTools.FluorescentEffect(row);
            ((HtmlAnchor)row.FindControl("aedit")).HRef ="***.aspx");
        }

    }

试试这样吧,不要linkbutton的click事件

#14


2.ScriptManager.RegisterClientScriptBlock(this, this.GetType(), "", "<script>window.open(‘URL’)</script>", true);

=>

ScriptManager.RegisterClientScriptBlock(this, this.GetType(), "", "<script>window.open('URL')</script>", false);

or

ScriptManager.RegisterClientScriptBlock(this, this.GetType(), "", "window.open('URL');", true);

#15



 <asp:TemplateField HeaderText="操作" ItemStyle-CssClass="gridview_item" HeaderStyle-CssClass="gridview__headerItem">
                    <ItemTemplate>
                        <a id="aedit" runat="server">详细</a>&nbsp;
                    </ItemTemplate>
                </asp:TemplateField>
后台中
    protected void grv_RowDataBound(object sender, GridViewRowEventArgs e)
    {
        GridViewRow row = e.Row;
        if (row.RowType == DataControlRowType.DataRow)
        {
            ((HtmlAnchor)row.FindControl("aedit")).HRef ="***.aspx");
        }

    }




 DevTools.FluorescentEffect(row);
这个去掉,是添加样式的

#16


引用 13 楼 ycz815 的回复:
C# code


 <asp:TemplateField HeaderText="操作" ItemStyle-CssClass="gridview_item" HeaderStyle-CssClass="gridview__headerItem">
                    <ItemTemplate>
                        <a id="aed……
你直接href过去了 ,回来了数据一也一样没了么,没看懂楼主要用的东西的意思。

#17


你之前用的方法2,思路是没问题的,
只是你不太了解ScriptManager.RegisterClientScriptBlock这个方法

RegisterStartupScript 这个方法也可以,只是输出脚本的位置不同而已。

在你当前的应用,没有影响

#18


ScriptManager.RegisterStartupScript
应该可以

#1


试试ScriptManager.RegisterStartupScript

在ms ajax存在的情况下经常会有些莫名其妙的js错误,很无语,所以我从来不用

#2


response.write()
这种写法应该没错,是不是浏览器设置问题?

#3


ScriptManager.RegisterClientScriptBlock(UpdatePanel1, this.GetType(), "click", "window.open("login.aspx");", true);  

#4


ScriptManager.RegisterStartupScript
用这个注册脚本是可以的,这个是专门对有Ajax的页面的脚本注册,顺带说一下 Response.Write("<script language = 'JavaScript'> window.open('url','_blank') </script>
这个从语法上来讲没错误,但是输出到页面就会有错误了,language后面好像是不支持单引号的

#5


#6


引用 2 楼 hookyzlr 的回复:
response.write()
这种写法应该没错,是不是浏览器设置问题?
2楼的,没用过Ajax?Ajax页面是不支持Response.Write()这个方法的,谢谢

#7


ScriptManager.RegisterStartupScript
就可以解决。

#8


是不支持这个方法来注册脚本!你要输出其他的还是没问题

#9


问题在于你的updatepanel,在updatepanel中用js跳转会报异常的,你可以测试下,你去掉updatepanel,肯定能跳转

#10


这个也有错啊,那应该怎么避免呢?现在是这样:我在这个updatepanel里面放置的gridview,点击了那个linkbutton之后,如果response.redirect("***.aspx"),查看了详细数据,再点返回本页面,这个gridview里面的数据就都没有了,怎么样保存这个页面,让倒回来之后的查询结果还在呢?只要我能解决这个问题,或者是通过一定的途径绕过这个问题,我就谢谢啦。

#11


ScriptManager.RegisterStartupScript你直接使用这个去注册脚本就是了,这个对象是可以的,你都response.redirect到另外一个页面去了,数据是肯定保存不了的了,除非你存在session里面,在每一次进页面里面的时候就判断一下session有没有数据,有的话就帮到gridview上去,我只能想到这个方法,不过比较耗费服务器资源

#12


或者将你的查询关键的条件穿到另外一个页面去,然后再穿回来,不过用起来比较蛋疼 linkbutton打开一个新页面,我的gridview里面有几列是linkbutton,放在updatepanel里面

#13



 <asp:TemplateField HeaderText="操作" ItemStyle-CssClass="gridview_item" HeaderStyle-CssClass="gridview__headerItem">
                    <ItemTemplate>
                        <a id="aedit" runat="server">编辑</a>&nbsp;
                    </ItemTemplate>
                </asp:TemplateField>
后台中
    protected void grv_RowDataBound(object sender, GridViewRowEventArgs e)
    {
        GridViewRow row = e.Row;
        if (row.RowType == DataControlRowType.DataRow)
        {
            DevTools.FluorescentEffect(row);
            ((HtmlAnchor)row.FindControl("aedit")).HRef ="***.aspx");
        }

    }

试试这样吧,不要linkbutton的click事件

#14


2.ScriptManager.RegisterClientScriptBlock(this, this.GetType(), "", "<script>window.open(‘URL’)</script>", true);

=>

ScriptManager.RegisterClientScriptBlock(this, this.GetType(), "", "<script>window.open('URL')</script>", false);

or

ScriptManager.RegisterClientScriptBlock(this, this.GetType(), "", "window.open('URL');", true);

#15



 <asp:TemplateField HeaderText="操作" ItemStyle-CssClass="gridview_item" HeaderStyle-CssClass="gridview__headerItem">
                    <ItemTemplate>
                        <a id="aedit" runat="server">详细</a>&nbsp;
                    </ItemTemplate>
                </asp:TemplateField>
后台中
    protected void grv_RowDataBound(object sender, GridViewRowEventArgs e)
    {
        GridViewRow row = e.Row;
        if (row.RowType == DataControlRowType.DataRow)
        {
            ((HtmlAnchor)row.FindControl("aedit")).HRef ="***.aspx");
        }

    }




 DevTools.FluorescentEffect(row);
这个去掉,是添加样式的

#16


引用 13 楼 ycz815 的回复:
C# code


 <asp:TemplateField HeaderText="操作" ItemStyle-CssClass="gridview_item" HeaderStyle-CssClass="gridview__headerItem">
                    <ItemTemplate>
                        <a id="aed……
你直接href过去了 ,回来了数据一也一样没了么,没看懂楼主要用的东西的意思。

#17


你之前用的方法2,思路是没问题的,
只是你不太了解ScriptManager.RegisterClientScriptBlock这个方法

RegisterStartupScript 这个方法也可以,只是输出脚本的位置不同而已。

在你当前的应用,没有影响

#18


ScriptManager.RegisterStartupScript
应该可以