버튼은 UC 내부의 jQuery 대화 상자 내부에서 포스트백이 아닙니다
-
05-07-2019 - |
문제
사용자 컨트롤을 개발 중이고 jQuery 대화 상자 내부에 ASP.NET 버튼이 있지만 버튼을 누르면 아무 일도 일어나지 않으면 서서에서 버튼 클릭 이벤트를 호출하지 않습니다.
dlg.parent().appendTo(jQuery("form:first"));
그러나 그것은 나도 도움이되지 않았다. ASP.NET USERCONTROL 내부에서 이것을 달성 할 수 있습니까? 또한 updatePanel 내부에서 대화 상자를 사용할 수 있는지 궁금합니다.
해결책
버튼을 대화 상자 버튼으로 만들고 HiddenButton의 ID와 함께 페이지에 asp.net 버튼을 넣고 스타일로 div로 랩핑 할 수 있습니다. display:none;
따라서 버튼이 표시되지 않습니다. (표시되지 않아야합니다 = "false"버튼이 렌더링됩니다)
대화 상자 JavaScript에서 숨겨진 버튼을 클릭하는 효과가있는 버튼을 추가합니다.
jQuery("#dialog").dialog({
buttons: {
'ButtonText': function() {
//save the session
__doPostBack('<%# HiddenButton.ClientID %>', '')
jQuery(this).dialog('close');
}
}
});
숨겨진 버튼에 ASP 클릭 핸들러 추가
<div style="display:none;">
<asp:Button ID="HiddenButton" OnClick="HiddenButton_Click" ></Button>
<div>
대화 상자 버튼을 클릭하면 서버 사이드의 이벤트를 클릭합니다.
이것이 내가이 패턴을 항상 사용하는 데 도움이되기를 바랍니다.
다른 팁
ASP.NET과 양식 내에서 버튼을 찾을 수없는 것과 관련이 있다고 생각합니다.
jQuery에서 .live 이벤트 설정을 사용 - .live를 사용하여 대화 상자를 만들기 전에 이벤트를 바인딩하면 작동해야합니다.
문서에서 이와 같은 것으로 끝납니다. 준비 기능 :
$("#btn").live("click", function(){
// Do something
});
$("#dialog").dialog({
...
}
나는 같은 문제가 있었다. 대화 상자에서 버튼을 꺼내고 CSS와 함께 숨기고 대화 상자의 닫기 이벤트에서 트리거되었습니다 (나중에 더 깨끗하게 할 것입니다. 그러나 이것은 최소한 문제를 설명합니다).