2012-09-26 3 views
2

포스트 백을 원하지 않는다는 점을 제외하고는 정상적으로 작동하는 버튼이 있습니다.포스트 백이 아닌 버튼 이벤트 호출

사용자가이 버튼을 클릭하면 다음 포스트 백에서 버튼 클릭 이벤트를 실행하고 싶습니다. 특정 버튼을 다시 게시하지 못하게하려고합니다.

<asp:Button ID="ChangeAllBtn" runat="server" Text="Change All" OnClientClick="return false;" OnClick="ChangeAllBtnClick" /> 

하지만 다시 게시 후에는 ChangeAllBtnClick를 호출하지 않습니다

나는이 시도. "return false;"를 제거하면 원하기 전에 다시 게시가 있습니다.

무엇을할까요?

+0

로 다시 숨겨진 필드 값을 설정 처음 클릭하지 않습니까? 'return false; '는 처리를 멈추고'onclick' 이벤트는 시작되지 않습니다. 달성하고자하는 것을 더 설명 할 수 있습니까 –

+0

포스트 백을 비활성화하기 위해 클라이언트 측 스크립트를 수행하는 버튼이 있습니다. 그러나 나는 그것이 내 프로그램의 일부 기능을 변경할 수 있도록 어느 시점에서 클릭되었습니다 경우 서버 측면에서 알고 싶습니다. – proseidon

+0

스크립트에서 return true 또는 false를 반환하면 클라이언트 스크립트가 실행될 때까지 onclick이 호출되지 않습니다. 예 :'OnCLientClick = "return javascript_function();" –

답변

1

이상한 요청과 같습니다. 내 머리 꼭대기에서 어떻게해야할지 모르겠다. 코드를 다시 게시 할 때 버튼 클릭 이벤트에 있었던 코드를 실행하는 방식으로 코드를 구조화 할 수 있습니까? 예 :

void ChangeAllBtnClick(object o, EventArgs e) 
{ 
    DoStuff(); 
} 

void RealButton_BtnClick(object o, EventArgs e) 
{ 
    DoStuff(); //Executing all the code that would have been run for ChangeAllBtnClick here 
    /* 
     code for RealButton would be in here... 
    */ 
} 

void DoStuff() 
{ 
    //Whatever 
} 

이 옵션을 선택하지 않으면 서버 쪽 컨트롤 인 숨김 필드가 생성 될 수 있습니다. 그런 다음 클라이언트 측 스크립트에서이를 설정하고 서버 측에서 값을 확인할 수 있습니다.

+0

불행히도 아니오. 세부 사항은 거대한 데이터베이스 관리 페이지를 수행하고 있다는 것입니다. 많은 통제가 진행되고 있고, 일부 개인은 일부 대량 변경이 있습니다. 일부 버튼을 사용하면 열을 대량 편집 할 수 있습니다.나는 페이지가 변경 될 때까지 다시 게시하는 것을 원하지 않지만 '모두 변경'버튼을 클릭하면 내가 알고 싶어한다. 왜냐하면 빠른 액세스를 위해 데이터베이스를 미리로드하기 때문이다. 작은 변화라면 사전로드가 불필요합니다. – proseidon

+0

어디에서 데이터베이스를 미리로드합니까? 웹 서비스 onclient 클릭을 호출하고 변경 사항을 기반으로 데이터베이스를 미리로드 할 수 있으며 스크립트가 처리 된 후 포스트 백을 클릭 한 다음 상태를 확인하고 데이터를 처리 할 수 ​​있습니다 –

2

첫 번째 클릭을 저장하는 숨겨진 필드를 가질 수 있습니다. 사용자가 두 번째로 클릭하면 Ajax 요청을 시도 할 수 있습니다.

이렇게하면 페이지에 다시 게시되지 않습니다.

0

다음과 같이 작동합니까? 다시 게시하지 않도록 onclientclick 자바 스크립트를 false로 설정하고 숨겨진 필드의 값을 "1"로 설정합니다. 기본값은 기본적으로 플래그 "0"입니다. PageLoad에

값이 하나 인 경우 다음 원하는 코드를 실행, 숨겨진 필드의 값을 확인하고 2 일에 제출하려면 왜 0

<!------HTML Code------> 
<input type="hidden" id="hdnChangeAllFlag value="0" /> 
<asp:Button ID="ChangeAllBtn" runat="server" Text="Change All" OnClientClick="return > ChangeAllClicked()" /> 

<script> 
function ChangeAllClicked() 
{ 
$("#hdnChangeAllFlag").val('1'); 
return false; 
} 
</script> 
''' Server Side Code 

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load 
    If Request("hdnChangeAllFlag")="1" and IsPostback Then 
     ''''Y 
    End If 

End Sub 
관련 문제