1

そのため、クリックした行に基づいて詳細ページを開くリンクであるグリッドビューにフィールドを設定しようとしています。詳細ページに手動でアクセスすると機能しますが、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の違いを正しく理解していなかったと思います。

4

2 に答える 2

1

イベントが実際に発生していることを確認できましたか?OnClickの代わりにLinkBut​​tonのイベントを使用してみてくださいOnClientClick

また、Response.Redirect現在のページの実行を終了することを示すブール値を受け入れる2番目のオーバーロードを使用してみてください。

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 に答える