2017-09-18 35 views
3

부분 업데이트가 발생한 후에도 ASP 버튼이 실행되지 않게되는 원인은 무엇입니까?Asp : 업데이트 패널 안의 버튼 클릭 이벤트가 실행되지 않음

<asp:UpdatePanel ID="upPan" runat="server" UpdateMode="Conditional"> 
    <ContentTemplate> 
    <asp:Button ID="btnSave" ClientIDMode="Static" runat="Server" Text="Save" CausesValidation="false" /> 
    </ContentTemplate> 
</asp:UpdatePanel> 
  • 아무 버튼이 순서대로 업데이트 패널 내부의 아래 루틴 화재를 해고 처음.
  • 포스트 백이 트리거를 발생시킨 후 다시 버튼을 누르면 LoadPreRenderComplete 이벤트가 발생하지만 클릭 이벤트는 건너 뜁니다. 이 문제를 해결하려면

VB

Protected Sub Page_Load(sender As Object, e As EventArgs) Handles Me.PageLoad 
    //Runs everytime 
End Sub 

Protected Sub btnSave_Click(sender As Object, e As EventArgs) Handles btnSave.Click 
//Doesn't fire after first postback. 
End Sub 

Protected Sub Page_PreRenderComplete(sender As Object, e As EventArgs) Handles Me.PreRenderComplete 
    //Runs everytime 
End Sub 

실패 결의안

제안은 다음과 같습니다

  • ChildrenAsTriggers= "True" 이것은 이미 UpdatePanel의 기본 동작이며 변경 사항을 제공하지 않습니다.
  • <asp:AsyncPostBackTrigger ControlID="btnSave" EventName="Click" /> 다시 기본적으로 패널의 자식 컨트롤은 비동기 포스트 백을 발생시키고 트리거를 선언하는 것은 중복됩니다.

나는 단순히 asp:LinkButton 문제에 asp:Button을 변경하면 성공적인 해결은 해결됩니다.


요약

다시 게시가 발생하는되어 있지만 보낸 사람이 ASP 때 클릭 이벤트가 누락되고 : Button 컨트롤.

누구든지이 문제의 원인을 설명 할 수 있습니까?

+1

마크 업에서'OnClick = "btnSave_Click"을 설정해보십시오. – hardkoded

+0

https://stackoverflow.com/questions/25075538/button-click-not-working-inside-update-panel –

+0

@ NikolaosPolygenis 어떤 도움을 주셔서 감사하지만 내 질문에 게시 된 답변을 작동하지 않을 것이라고 설명하고 심지어 정확하지 않습니다. – Obsidian

답변

1

처음으로, 제 대답은 C#입니다. 문제를 재현 할 수 없기 때문에 많은 답변도 아닙니다. 버튼과 LinkButtons의 차이점은 Button은 제출 동작을 사용하고 LinkButton은 자바 스크립트 포스트 백을 사용한다는 것입니다. 버튼에 UseSubmitBehavior="false"을 삽입하면 LinkButton처럼 작동합니다.

여기 내 완벽한 테스트 코드가 있습니다.

using System; 
using System.Web; 
using System.Web.UI; 
using System.Web.UI.WebControls; 

public partial class Test : System.Web.UI.Page 
{ 
    protected void Page_Load(object sender, EventArgs e) 
    { 
     txtBox.Text = "Page_Loaded"; 
    } 

    protected void btnSave_Click(object sender, EventArgs e) 
    { 
     txtBox.Text += "\n" + DateTime.Now.ToString("mm:ss:fff"); 
    } 

    protected void Page_PreRenderComplete(object sender, EventArgs e) 
    { 
     txtBox.Text += "\nPreRenderComplete"; 
    } 
} 

을 클릭 : 아마 C# 및 VB 핸들 이벤트와 같은 문제의 핵심은 약간 다르게

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Test3.aspx.cs" Inherits="Test3" %> 

<!DOCTYPE html> 

<html xmlns="http://www.w3.org/1999/xhtml"> 
<head runat="server"> 
    <title></title> 
</head> 
<body> 
    <form id="form1" runat="server"> 
     <div> 

      <asp:ScriptManager ID="PageScriptManager" runat="server" /> 
      <asp:UpdatePanel ID="upPan" runat="server" UpdateMode="Conditional"> 
       <ContentTemplate> 
        <asp:Button ID="btnSave" ClientIDMode="Static" runat="Server" Text="Button" CausesValidation="false" OnClick="btnSave_Click" /> 
        <asp:LinkButton ID="lnkButton" ClientIDMode="Static" runat="Server" Text="Link Button" CausesValidation="false" OnClick="btnSave_Click" /> 
        <asp:TextBox ID="txtBox" runat="server" TextMode="MultiLine" Rows="3" /> 
       </ContentTemplate> 
      </asp:UpdatePanel> 

     </div> 
    </form> 
</body> 
</html> 

코드 숨김 - 인 C#을 나는 Handles을 가지고 있지 않기 때문에 몇 가지 변경했습니다 Button (또는 LinkButton)은 매번 TextBox를 작동하고 업데이트합니다.

Page_Loaded 
55:54:185 
PreRenderComplete 
+0

예 자바 스크립트 충돌. 나를 올바른 방향으로 가리켜 주셔서 감사합니다. – Obsidian