2012-09-27 5 views
0

autopostback false 인 asp.net 드롭 다운 목록 컨트롤이 있습니다. 드롭 다운 값이 변경되는 동안 확인 메시지를 표시하는 js 코드를 작성했습니다.드롭 다운 목록에 이전 값이 표시되지 않습니다.

function ConfirmAbsent(ddlPresence) { 
     if (ddlPresence != null) { 
      var myValue = ddlPresence.options[ddlPresence.selectedIndex].text; 
      var blnAbsent = confirm("This will mark as "+ myValue +". Please confirm clicking OK."); 

      if (blnAbsent) { 
       return true; 
      } 
      else { 
       return false; 
      } 
     } 
    } 

그리고 내가 확인 버튼을 클릭하면 올바르게 작동 페이지를 다시 게시

ddlUserPresence.Attributes.Add("onchange", "if (!ConfirmAbsent(" + ddlUserPresence.ClientID 
        + ")) return; else __doPostBack('" 
        + ddlUserPresence.UniqueID + "', '');"); 

아래처럼 DropDownList로이 속성을 추가 할 수 있지만 내가 취소 버튼을 클릭 할 때 나에게 이전 값을 표시되지 않습니다 대신 현재 값을 표시합니다.

취소 버튼을 클릭하면 이전 값이 표시됩니다. 도움을주십시오.

답변

0

당신이해야 이벤트 핸들러에서 return false 당신이 이벤트 않도록하려면 :

ddlUserPresence.Attributes.Add("onchange", "return(ConfirmAbsent(" + ddlUserPresence.ClientID +"));"); 

당신은 또한 DropDownList의 클라이언트 ID를 전달됩니다 있지만 컨트롤을 찾기 위해 사용하지 않을 것입니다. 따라서 document.GetElementById을 사용해야합니다. 당신이 텍스트 상자에 대한 서버 측에 설정된 초기 값을 얻을 수 defaultValue을 사용할 수 있습니다

function ConfirmAbsent(ddlPresenceID) { 
    var ddlPresence = document.GetElementById(ddlPresenceID); 
    if (ddlPresence != null) { 

참고.

+0

그리고 javascript 메소드는 그대로 유지됩니다. 자동 포스트 백 이벤트는 어떻게됩니까? – akeeseth

+0

@akeeseth :'AutoPostback'은 이벤트가 아닙니다. 드롭 다운은'AutoPostback = "true"'와 clientside 핸들러가 true를 반환 할 때만 즉시 포스트 백 될 것입니다. 따라서'onchange'에서'false'를 반환하면 드롭 다운은 다시 게시되지 않습니다. –

+0

아직도 작동하지 않습니다. – akeeseth

관련 문제