所以,我试图在gridview中有一个字段,这是一个根据点击的行打开详细信息页面的链接。当我手动转到它时,详细信息页面可以工作,但我似乎无法通过调用一个执行Response.Redirect(URL)的函数来访问它 - 相反,我得到了一个奇怪的行为,当点击链接按钮时,该页面进行回发并保持不变。
我做错了什么?我应该使用Server.Transfer()吗?我更倾向于使用重定向,因为在我看来的用例中,我更喜欢使用网址更新。
这是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");
}
出于绝望/诊断,我试图重定向到谷歌而不是我制作的网址......仍然没有。该页面仅刷新自己。我做错了吗?
回答后编辑:我想我并没有正确理解onclick和onclientclick之间的区别。
答案 0 :(得分:1)
您是否能够确认您的活动实际上是在开火?尝试使用LinkButton的OnClick
事件而不是OnClientClick
。
另外,尝试使用Response.Redirect
的第二个重载,它接受一个指示结束当前页面执行的布尔值:
Response.Redirect("http://www.google.com", true); //Indicates that the execution of the current page should terminate.
答案 1 :(得分:0)
Response.Redirect抛出ThreadAbortException ...尝试处理异常,你也可以尝试输入按钮或超链接等html控件,而不是项目模板中的链接按钮。