所以,我试图在 gridview 中有一个字段,它是一个打开详细信息页面的链接,基于单击的行。详细信息页面在我手动访问时有效,但我似乎无法通过调用执行 Response.Redirect(URL) 的函数来访问它 - 相反,当单击链接按钮时,我得到了奇怪的行为,页面进行回发并保持在自身上。
我究竟做错了什么?我应该改用 Server.Transfer() 吗?我宁愿使用重定向,因为在我正在查看的用例中,更新 url 在我看来是一种界面优势。
这是 sharepoint webpart 的一部分,另一个页面位于同一 sharepoint 服务器上,并且是不同的 webpart 集合。
<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 ......仍然没有。页面只会自行刷新。难道我做错了什么?
回答后编辑:我想我没有正确理解 onclick 和 onclientclick 之间的区别。