2013-10-23 19 views
5

私はasp.net Webアプリケーションを持っています。私の.aspxページでは、私は3つのasp:LinkButtonを持っている更新パネルを持っているので、C#コードの後ろにコールする必要があります。問題は、onclickが動作しないことです。ここでasp.net linkbutton in updatepanelが起動しない

は、コードがどのように見えるかです:

<div id="div1"> 
       <asp:UpdatePanel ID="UpdatePanel2" runat="server"> 
        <ContentTemplate> 
         <ul> 
          <li><asp:LinkButton ID="lnk_1" runat="server" OnClick="lnk1_Click">Link1</asp:LinkButton></li> 
          <li><asp:LinkButton ID="lnk_2" runat="server" OnClick="lnk2_Click">Link2</asp:LinkButton></li> 
          <li><asp:LinkButton ID="lnk_3" runat="server" OnClick="lnk3_Click">Link3</asp:LinkButton></li> 
         </ul> 
<div> some more code here </div> 
</ContentTemplate> 
        <Triggers> 
         <asp:PostBackTrigger ControlID="lnk_1" /> 
         <asp:PostBackTrigger ControlID="lnk_2" /> 
         <asp:PostBackTrigger ControlID="lnk_3" /> 
        </Triggers> 
       </asp:UpdatePanel> 
      </div> 

コードが間違っていますか?私もAsyncPostBackTriggerを使ってみましたが、まだ動作しません。

コードビハインドはまったく呼び出されません。

私もGoogleで検索しようとしましたが、解決策が見つかりませんでした。

答えて

5

あなたはとても近くです。いくつかのこと:

  • あなたが試したと言ったように、トリガーはAsyncPostBackTriggersでなければなりません。
  • トリガーにイベント名が必要です。
  • 提案:あなたのイベントが発生するのを防ぐことはできませんが、ポストバックを起こすためにすべてのpostableイベントを必要としない限り、UpdatePanelにUpdateMode = "Conditional"を追加してください。

ここに実例があります。

Webフォーム - のWebForm1.aspx:

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs" Inherits="AspDotNetStorefront.WebForm1" %> 

<!DOCTYPE html> 

<html xmlns="http://www.w3.org/1999/xhtml"> 
    <head runat="server"> 
     <title></title> 
    </head> 
    <body> 
     <form id="form1" runat="server"> 
      <asp:ScriptManager runat="server"></asp:ScriptManager> 
      <div id="div1"> 
       <asp:UpdatePanel ID="UpdatePanel2" runat="server" UpdateMode="Conditional"> 
        <ContentTemplate> 
         <ul> 
          <li><asp:LinkButton ID="lnk_1" runat="server" OnClick="lnk1_Click">Never clicked</asp:LinkButton></li> 
         </ul> 
        </ContentTemplate> 
        <Triggers> 
         <asp:AsyncPostBackTrigger ControlID="lnk_1" EventName="Click" /> 
        </Triggers> 
       </asp:UpdatePanel> 
      </div>  
     </form> 
    </body> 
</html> 

分離コード - WebForm1.aspx.cs:

using System; 

namespace AspDotNetStorefront 
{ 
    public partial class WebForm1 : System.Web.UI.Page 
    { 
     private static int _clickedCount = 0; 

     protected void lnk1_Click(object sender, EventArgs e) 
     { 
      ++_clickedCount; 
      var suffix = _clickedCount <= 1 ? "time" : "times"; 
      lnk_1.Text = string.Format("Clicked {0} {1}", _clickedCount, suffix); 
     } 
    } 
} 
関連する問題