2012-07-03 2 views
1

동적 테이블을 생성 할 때 DDL 및 버튼을 클릭했습니다. 모든 컨트롤은 UpdatePanel 내에 있습니다.asp.net 패널 및 포스트 백 업데이트

패널 외부에는 표가 만들어 질 때까지 숨겨져 있어야하는 2 개의 버튼이 있습니다. 버튼이 visible = false로 시작하고 내가 두 번째 UpdatePanel을 추가하는 경우, 그들은

가시가 결코 UpdatePanel에서 GO 버튼을 클릭하고 일종의 작동하지만 거기에서이 개 버튼을 넣어 후에 나는 사실로 설정하면 두 버튼 중 하나를 클릭 할 때 항상이 오류가 발생합니다.

Microsoft JScript runtime error: Sys.WebForms.PageRequestManagerParserErrorException: 
The message received from the server could not be parsed. 

해결 방법?

답변

3

두 개의 버튼을 업데이트 패널 내부로 이동하십시오. 업데이트 패널의 컨트롤 만 Ajax 호출에서 업데이트됩니다. 즉, Ajax 호출에서 코드 숨김을 통해 컨트롤의 상태를 변경하려면 업데이트 패널에 코드 숨김을 포함시켜야합니다. Ajax 호출에서는 업데이트 패널 외부의 컨트롤을 변경할 수 없습니다.

업데이트 이 경우 이벤트 처리기가 필요합니다. 버튼을 보이도록 설정 = true; 표시 여부를 숨김으로 설정 한 다음 통화가 완료되면 아래와 같이 변경합니다.

<script type="text/javascript" language="javascript"> 
    Sys.WebForms.PageRequestManager.getInstance().add_beginRequest(beginRequestHandle); 
     Sys.WebForms.PageRequestManager.getInstance().add_endRequest(endRequestHandle); 
     function beginRequestHandle(sender, Args) { 
     //Do something when call begins. 
     } 

function endRequestHandle(sender, Args) { 
document.getElementById("Button1").style.visibility = "visible"; 
document.getElementById("Button2").style.visibility = "visible"; 
} 
     </script> 
+0

EPPlus 호출을 중단하여 내용을 Excel 파일로 저장하므로 외부에 필요할 수 있습니다. JS를 사용하여 페이지를 만들 수있는 방법이 있습니까, 아니면 페이지를 업데이트하지 않고 버튼을 표시하거나 숨길 수있는 다른 방법이 있습니까? – user1468537

+0

내 대답이 업데이트되었습니다. –

+0

거의 알았습니다. 해당 ASP 이후이 얻을 : 단추 Microsoft JScript 런타임 오류 : '스타일'속성의 값을 가져올 수 없습니다 : 개체가 null 또는 정의되지 않은 위의 변경하는 방법? – user1468537

0

예, Ashwin과 같이 업데이트 패널 외부에 버튼이 필요한 경우 JS에서 버튼을 표시해야한다고 말했습니다. 당신이 당신의 페이지에 스크립트 관리자가있는 경우 버튼 서버 컨트롤은 다음 코드 블록 <를 사용하여 버튼의 클라이언트 ID를 얻을 경우, 당신은이

<script type="text/javascript" language="javascript"> 
    function showButtons(){ 
    document.getElementById("<%= Button1.ClientID %>").style.visibility = "visible"; 
    document.getElementById("<%= Button2.ClientID %>").style.visibility = "visible"; 
    } 
</script> 

같은 코드 숨김에서 버튼을 볼 만드는 JS 함수를 호출 할 수 있습니다 % = %>. 동적 테이블을 만든 후 코드 숨김에서이 ​​코드를 사용하십시오.

ScriptManager.RegisterStartupScript(this.Page, this.Page.GetType(), "showButtons", "showButtons();", true); 
+0

레이블에 대한 동일한 작품 것인가? 저도 그렇게 할 수는 없습니다. – user1468537

+0

문제는 무엇입니까? –

+0

포스트 백 후에 텍스트가 추가되었으므로 이제는 괜찮습니다. – user1468537