2013-10-23 47 views
5

Tôi có một ứng dụng web asp.net. Trong trang .aspx của tôi, tôi có một bảng cập nhật, trong đó tôi có 3 asp:LinkButton nên thực hiện cuộc gọi đến mã C# phía sau. Vấn đề là onclick không hoạt động.asp.net linkbutton trong updatepanel không kích hoạt

Sau đây là cách mã trông:

<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> 

Điều gì là sai với mã? Tôi cũng đã thử sử dụng AsyncPostBackTrigger nhưng vẫn không hoạt động.

Mã phía sau không được viện dẫn chút nào.

Tôi cũng đã cố gắng tìm kiếm trên Google nhưng không thể tìm thấy giải pháp.

Trả lời

5

Bạn đang ở rất gần. Một vài điều:

  • Trình kích hoạt của bạn phải là AsyncPostBackTriggers như bạn đã nói.
  • Trình kích hoạt của bạn cần tên sự kiện.
  • Gợi ý: Thao tác này sẽ không ngăn sự kiện của bạn kích hoạt, trừ khi bạn muốn MỌI sự kiện có thể đăng để gây postback, thêm UpdateMode = "Conditional" vào UpdatePanel của bạn.

Đây là ví dụ hoạt động.

Mẫu 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> 

CodeBehind - 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); 
     } 
    } 
} 
Các vấn đề liên quan