2013-10-23 5 views
5

asp.net 웹 응용 프로그램이 있습니다. 내 .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 여야합니다.
  • 트리거에는 이벤트 이름이 필요합니다.
  • 제안 : 이벤트 발생을 막을 수는 없지만 모든 포스트 이벤트가 포스트 백을 발생시키지 않으면 UpdatePanel에 UpdateMode = "Conditional"을 추가하십시오.

다음은 작동 예제입니다.

웹 양식 - 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); 
     } 
    } 
}