2012-10-09 69 views
1

所以,我想在gridview中有一个字段,它是一个打开详细信息页面的链接,基于点击的行。当我手动去它的时候,详细信息页面是有效的,但我似乎无法通过调用一个执行Response.Redirect(URL)的函数来访问它 - 相反,当我点击linkbutton时,做回发并保持自己。Response.Redirect不按预期工作 - 页面刷新本身,没有重定向发生

我在做什么错?我应该使用Server.Transfer()吗?我宁愿使用重定向,因为在我看来,使用url更新在我看来就像是一个接口优势。

这是sharepoint webpart的一部分,另一页在同一个sharepoint服务器上,是一个不同的webparts集合。

<asp:Gridview ID="grdWU" runat="server" [+bunch of settings]> 
<Columns> 
    <asp:TemplateField HeaderText="Workunit #" HeaderStyle-HorizontalAlign="Left"> 
     <ItemTemplate> 
     <asp:Linkbutton ID="Workunit" runat="server" **OnClientClick="OpenDetails"** Text='<%# Bind("Workunit") %>'></asp:Linkbutton> 
     </ItemTemplate> 
    </asp:TemplateField> 
</Columns> 
</asp:Gridview> 

在背后类的代码:

protected void OpenDetails(object sender, EventArgs e) 
    { 
     GridViewRow clickedRow = ((LinkButton) sender).NamingContainer as GridViewRow; 
     Button btnWorkunit = (Button)clickedRow.FindControl("Workunit"); 
      //Response.Redirect(workunitdetailsurl + "?Workunit=" + activeworkunit.ID, true); 
     Response.Redirect("http://www.google.com"); 
    } 

绝望/诊断的,我试图重新定向到谷歌,而不是我制作的URL ......仍然一无所获。该页面只刷新自己。难道我做错了什么?

Post-answer编辑:我想我没有正确理解onclick和onclientclick之间的区别。

+1

你为什么要这样做onclientclick? –

回答

1

你能证实你的活动实际上是在开火吗?尝试使用LinkBut​​ton的OnClick事件而不是OnClientClick

此外,尝试使用第二重载Response.Redirect它接受一个布尔值,指示要结束当前页面的执行:

Response.Redirect("http://www.google.com", true); //Indicates that the execution of the current page should terminate. 
+0

我其实已经尝试过了。 – sylverfyre

+0

我更新了我的回复,建议在您的linkbutton上使用'OnClick'而不是'OnClientClick' –

+0

当我使用OnClick时,我得到 - 无法强制类型为'System.Web.UI.WebControls.LinkBut​​ton'的对象输入'System。 Web.UI.WebControls.Button”。 要进一步看linkbuttons ...我在印象之下,他们的行为更像一个按钮比这... – sylverfyre

0

的Response.Redirect引发ThreadAbortException ...尝试来处理异常,你也可以尝试像输入按钮或超链接,而不是项目模板中的链接按钮的HTML控件..