2009-10-17 6 views
2

약 150 페이지에 저장 버튼이 있습니다. 사용자가 저장 버튼을 클릭 할 때 나는 클릭 후 버튼을 비활성화해야합니다. 사용자는 저장 버튼을 다시 클릭하지 않습니다.버튼을 클릭 한 후 버튼 기능을 비활성화하십시오.

protected void Button1_Click(object sender, EventArgs e) 
    { 
     // right now once the user clicks the save button 
     Button1.Enabled = "false" 

    } 

지금 나는 이렇게하고있다. 여기서 코드 작성을 향상시키기 위해 제게 제공 할 수있는 더 좋은 해결책이 있습니까?

+0

현재 솔루션에 어떤 문제가 있다고 생각하십니까? – pmarflee

답변

2

또한 자바 스크립트를 통해 그것을 해제 시도 할 수 있습니다 감사합니다.

0

당신이해야 할 일은 JavaScript를 사용하고 클라이언트 측에서 클릭 할 때 해제해야합니다.

클릭 이벤트가 포스트 백에서 발생합니다.

1

포스트 백을 계속 진행하기 전에 JavaScript를 사용하여 나중에 클릭 처리를 방지하기 위해 클릭 한 링크를 변경해야합니다. 순진 시도는이 성공적으로 포스트 백을 트리거에서 연속 클릭을 방지 할 수 있지만 또한 포스트 백을 트리거에서 첫 번째 클릭을 방지

<asp:LinkButton runat="server" id="button" OnClientClick="this.href='#'"> 
    Click - doesn't quite work 
</asp> 

될 것입니다. 이 작업을 올바르게 수행하려면 약간 더 많은 논리가 필요합니다. 코드 숨김에서 실제 포스트 백 (backback) JavaScript 스 니펫을 가져 와서 일부 로직으로 작업합니다. HTML 템플릿에서

protected void Page_PreRender(object sender, EventArgs e) 
{ 
    button1.OnClientClick = string.Format(
     "if(this.getAttribute('disabled')) return false; {0}; this.setAttribute('disabled','disabled'); return false;", 
     Page.ClientScript.GetPostBackEventReference(button1, null)); 
} 

: 당신은 어떤 CSS와 함께이 단장 할 수 있으며, 그 시점에서 내가 jQuery를 포함 권합니다

<asp:LinkButton runat="server" id="button" > 
    Click - does not allow multiple postbacks 
</asp> 

, 그래서 코드가 인해 명령 체인에 (보다 간결입니다).

3

나는 이것을 수행하는 최선의 선택이 자바 스크립트를 사용한다고 생각합니다. 당신이 jQuery를 사용한다면 (필자도 충분히 추천 할 수있다), 당신은 당신의 마스터 페이지에 자바 스크립트를 넣을 수있다. 저장 버튼의 선택기를 만드는 방법을 찾아야합니다. 이처럼 :이 예에서

$(document).ready(function(){ 
     $('.saveButton').bind("click", function(e) { 
       $(this).attr("disabled", "true"); 
      return true; //causes the client side script to run. 
     }); 
    }); 

, 나는 모든 저장 버튼을 CSS 클래스 ".saveButton"을했을 것으로 가정,하지만 당신은 버튼을 선택하는 자신 만의 방법을 찾을 수 있습니다.

건배!

사용자가 클릭 될 것입니다 후 버튼을 비활성화 자바 스크립트를 부착
+0

@Gus : jQuery 스 니펫과 같은 코드를 게시하는 경우 편집기 도구 모음에서 "코드"버튼 (010101)을 클릭하거나 키보드에서 Ctrl-K를 눌러 코드로 깔끔하게 형식을 지정하십시오 . 그런 다음 문법 만 강조 표시됩니다. –

+0

안녕하세요 거스, 위의 코드를 마스터 페이지에서 사용하면 재생 해 주셔서 감사합니다. 는 intally 버튼의 클릭시는 전 모든 버튼을 가} 캐치 (예외 전자) { 던져 전자를 비활성화해야합니다 저장 {공공 무효 저장 기능() { // 여기에 시도 얻어야한다; } 마침내 { // 여기에 저장 버튼을의 나 그 버튼을 원래 상태 (예)를 활성화 상태를 유지합니다 때 마지막으로} 여기 } – happysmile

+0

@marc_s을 가능 취득해야 저장 버튼의 나 // 를 사용한다 .. –

0

간단한 방법이 (페이지 onLoad 이벤트) :

myButton.Attributes.Add("onclick", " this.disabled = true; " + ClientScript.GetPostBackEventReference(btnSave, null) + ";"); 

그러나 버튼을 여러 페이지에 반복되면, 당신은 아마 중첩 된 마스터 페이지를 만들 수 있으며, 거기에 저장 버튼을 두거나이 비활성화 기능을 구현 한 클래스에서 페이지를 상속받습니다. 또한, 클릭 후 비활성화 할 컨트롤을 "스캔"할 수 있습니다!

관련 문제