そのため、クリックした行に基づいて詳細ページを開くリンクであるグリッドビューにフィールドを設定しようとしています。詳細ページに手動でアクセスすると機能しますが、Response.Redirect(URL)を実行する関数を呼び出してアクセスできないようです。代わりに、リンクボタンをクリックするとページが表示されるという奇妙な動作が発生します。ポストバックを実行し、それ自体にとどまります。
私は何が間違っているのですか?代わりにServer.Transfer()を使用する必要がありますか?私が見ているユースケースでは、URLを更新することはインターフェースの利点のように思えるので、リダイレクトを使用したいと思います。
これはSharePointWebパーツの一部であり、他のページは同じSharePointサーバー上にあり、Webパーツの異なるコレクションです。
<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の違いを正しく理解していなかったと思います。