2009-11-07 1 views
1

텍스트 상자와 제출 버튼이있는 aspx 페이지가 있습니다. 텍스트 상자에 데이터를 입력하고 단추를 누르면 데이터베이스에서 검색된 데이터를 표시하는 listview 컨트롤이 표시됩니다. 목록에는 정렬, 페이지 매김, 편집 기능이 있습니다. 각각에 대해 서버 측에서 해당 메소드가 트리거됩니다. 예 : lv_sorting lv_Edit 등 사용자가 텍스트 상자에 데이터를 입력하고 Enter 키를 누르면 Page.IsPostback이 false로 반환됩니다. IE 브라우저는 Firefox에서 true로 반환됩니다 (어떤 아이디어, 이 이유는 무엇입니까?).firefox 브라우저의 텍스트 상자에 타격 키를 입력하면 왜 Page.IsPostback 값이 true로 설정됩니까?

포스트 백이 true이면 해당 메서드가 호출됩니다. ie. lv_sorting 등등. 그러나 Page_Load 이벤트에서 포스트 백이 false 일 때만 데이터베이스에서 데이터를 가져 오므로 페이지에 파이어 폭스 브라우저에 데이터가 표시되지 않습니다.

firefox 브라우저에서 Enter 키를 누르면 listview에 데이터를 표시해야합니다. DefaultButton = "submitBtnId"를 사용하고 텍스트 입력란에 키를 입력했는데 강제로 버튼 클릭을 호출했지만 행운은 없습니다.

감사합니다.

function clickButton(e, buttonid) { 
      var bt = document.getElementById(buttonid); 
      if (typeof bt == 'object') { 
       if (navigator.appName.indexOf("Netscape") > (-1)) { 
        if (e.keyCode == 13) { 
         if (bt && typeof (bt.click) == 'undefined') { 
          bt.click = addClickFunction1(bt) 
         } 
        } 
       } 
       if (navigator.appName.indexOf("Microsoft Internet Explorer") > (-1)) { 

        if (event.keyCode == 13) { 
         bt.click(); 
         return false; 
        } 
       } 
      } 
     } 



     function addClickFunction1(bt) { 
      var result = true; 
      if (bt.onclick) result = bt.onclick(); 
      if (typeof (result) == 'undefined' || result) { 
       eval(bt.href); 
      } 
     } 
+0

지난 한 달 동안 많은 질문을 던졌습니다. 도움이되는 답변을받은 경우 녹색 확인 표시를 클릭하여 답변을 수락해야합니다. –

답변

1

입력을 누르면 Internet Explorer에서 단추를 제출하지 않습니다. 다른 브라우저는 않습니다. 이는 이러한 상황에서 버튼의 클릭 이벤트가 발생하지 않음을 의미합니다. 고맙게도 ASP.NET 2.0에서는 possible to set a default button입니다.

모든 브라우저에서 일관되게 버튼을 클릭하면 페이지가로드 될 때가 아니라 버튼의 클릭 이벤트가 발생하면 데이터베이스에서 값을로드해야합니다.

1

당신이 입력 키를 처리하려고 어떤 자바 스크립트 코드가 수행

참고로, 여기에 키가 텍스트 상자에 누르면 입력 할 때 호출되는 자바 스크립트 코드는?

양식 필드에 포커스가있을 때 Enter 키를 누르면 기본 동작은 양식의 첫 번째 단추를 활성화하는 것입니다. 그러면 서버에 양식이 게시되고 자연스럽게 IsPostBack이 참이됩니다.

IE가이 경우에 그렇게하지 않는 이유를 알지 못합니다. 그 때문에 동작을 변경할 수있는 자바가 있는지 궁금합니다.

IsPostBack 속성은 다른 페이지 (또는 같은 페이지)의 링크를 클릭하거나 다른 페이지의 Response.Redirect를 사용할 때와 같이 페이지에 처음으로 접근 할 때만 false입니다. 같은 페이지). 페이지의 양식이 서버에 다시 게시되면 IsPostBack 속성은 true입니다.

페이지를 업데이트하기 위해 항상 GET 요청 (예 : 브라우저에서 window.location.href를 설정)을 수행하지 않는 한 IsPostBack을 사용하여 데이터를로드해야 할 때를 알릴 수 없습니다 .

목록보기에서 ViewState를 사용하는 방법은 데이터를 한 번로드하고 포스트 백을 통해 해당 데이터를 유지할 수 있도록하는 것입니다. 기본 데이터를 변경하고 해당 변경 사항을 목록보기에 표시하려면 현재 데이터를 제거하고 새 데이터로로드해야합니다. 또는 EnableViewState를 목록보기로 전환하고 모든 다시 게시에 대해 새로운 데이터로로드하십시오.

0

왜 asp.net 단추 컨트롤을 사용하지 않고 클릭에 대한 이벤트 처리기를 추가 한 다음 이벤트 처리기에서 Listview를 채우십시오.

관련 문제