1

所以,我试图在 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 之间的区别。

4

2 回答 2

1

您是否能够确认您的事件实际上正在触发?尝试使用OnClickLinkBut​​ton 的事件而不是OnClientClick.

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

Response.Redirect("http://www.google.com", true); //Indicates that the execution of the current page should terminate. 
于 2012-10-09T16:15:39.797 回答
0

Response.Redirect 抛出 ThreadAbortException... 尝试处理异常,您也可以尝试输入按钮或超链接等 html 控件,而不是项目模板中的链接按钮。

于 2012-10-17T12:38:14.193 回答